summaryrefslogtreecommitdiffstats
path: root/Lib
diff options
context:
space:
mode:
Diffstat (limited to 'Lib')
-rw-r--r--Lib/idlelib/Debugger.py46
-rw-r--r--Lib/idlelib/PyShell.py2
-rw-r--r--Lib/idlelib/rpc.py2
3 files changed, 17 insertions, 33 deletions
diff --git a/Lib/idlelib/Debugger.py b/Lib/idlelib/Debugger.py
index 5f85182..75e6cc8 100644
--- a/Lib/idlelib/Debugger.py
+++ b/Lib/idlelib/Debugger.py
@@ -13,43 +13,29 @@ class Idb(bdb.Bdb):
bdb.Bdb.__init__(self)
def user_line(self, frame):
-
- co_filename = frame.f_code.co_filename
-## co_name = frame.f_code.co_name
-
- ## print>>sys.__stderr__, "*function: ", frame.f_code.co_name
- ## print>>sys.__stderr__, "*file: ", frame.f_code.co_filename
- ## print>>sys.__stderr__, "*line number: ", frame.f_code.co_firstlineno
- ## print>>sys.__stderr__, "*name: ", co_name
- ## print>>sys.__stderr__, "*function: ", frame.f_locals.get(co_name,None)
-
-## try:
-## # XXX 12 Dec 2002 CGT TO DO: Find way to get a reference to the
-## # XXX currently running function. If the function has an
-## # attribute called "DebuggerStepThrough", prevent the debugger
-## # from stepping through Idle code. The following doesn't work
-## # in instance methods. Hard coded some workarounds.
-## func = frame.f_locals[co_name]
-## if getattr(func, "DebuggerStepThrough", 0):
-## print "XXXX DEBUGGER STEPPING THROUGH"
-## self.set_step()
-## return
-## except:
-## pass
-
- # workaround for the problem above
- exclude = ('rpc.py', 'threading.py', '<string>')
- for rpcfile in exclude:
- if co_filename.count(rpcfile):
- self.set_step()
- return
+ if self.in_rpc_code(frame):
+ self.set_step()
+ return
message = self.__frame2message(frame)
self.gui.interaction(message, frame)
def user_exception(self, frame, info):
+ if self.in_rpc_code(frame):
+ self.set_step()
+ return
message = self.__frame2message(frame)
self.gui.interaction(message, frame, info)
+ def in_rpc_code(self, frame):
+ if frame.f_code.co_filename.count('rpc.py'):
+ return True
+ else:
+ prev_frame = frame.f_back
+ if prev_frame.f_code.co_filename.count('Debugger.py'):
+ # (that test will catch both Debugger.py and RemoteDebugger.py)
+ return False
+ return self.in_rpc_code(prev_frame)
+
def __frame2message(self, frame):
code = frame.f_code
filename = code.co_filename
diff --git a/Lib/idlelib/PyShell.py b/Lib/idlelib/PyShell.py
index 483a921..ba898b2 100644
--- a/Lib/idlelib/PyShell.py
+++ b/Lib/idlelib/PyShell.py
@@ -690,7 +690,7 @@ class PyShell(OutputWindow):
text.bind("<<beginning-of-line>>", self.home_callback)
text.bind("<<end-of-file>>", self.eof_callback)
text.bind("<<open-stack-viewer>>", self.open_stack_viewer)
- ##text.bind("<<toggle-debugger>>", self.toggle_debugger)
+ text.bind("<<toggle-debugger>>", self.toggle_debugger)
text.bind("<<open-python-shell>>", self.flist.open_shell)
text.bind("<<toggle-jit-stack-viewer>>", self.toggle_jit_stack_viewer)
text.bind("<<view-restart>>", self.view_restart_mark)
diff --git a/Lib/idlelib/rpc.py b/Lib/idlelib/rpc.py
index 4c3ef3e..8bb1aba 100644
--- a/Lib/idlelib/rpc.py
+++ b/Lib/idlelib/rpc.py
@@ -558,8 +558,6 @@ class RPCProxy:
if not self.__attributes.has_key(name):
raise AttributeError, name
- __getattr__.DebuggerStepThrough = 1
-
def __getattributes(self):
self.__attributes = self.sockio.remotecall(self.oid,
"__attributes__", (), {})