[Idle-dev] CVS: idle Debugger.py,1.20,1.21 PyShell.py,1.60,1.61 rpc.py,1.23,1.24
Kurt B. Kaiser
kbk@users.sourceforge.net
Fri, 09 May 2003 17:09:54 -0700
Update of /cvsroot/idlefork/idle
In directory sc8-pr-cvs1:/tmp/cvs-serv20416
Modified Files:
Debugger.py PyShell.py rpc.py
Log Message:
1. Update debugger to not trace RPC code even when calling Queue and
threading modules. Can debug user code which imports these modules,
though.
2. Re-enable debugger in PyShell.
3. Remove old code implementing previous approaches to this issue.
M Debugger.py
M PyShell.py
M rpc.py
Index: Debugger.py
===================================================================
RCS file: /cvsroot/idlefork/idle/Debugger.py,v
retrieving revision 1.20
retrieving revision 1.21
diff -C2 -r1.20 -r1.21
*** Debugger.py 1 Jan 2003 00:26:41 -0000 1.20
--- Debugger.py 10 May 2003 00:09:52 -0000 1.21
***************
*** 14,53 ****
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
message = self.__frame2message(frame)
self.gui.interaction(message, frame)
def user_exception(self, frame, info):
message = self.__frame2message(frame)
self.gui.interaction(message, frame, info)
def __frame2message(self, frame):
--- 14,39 ----
def user_line(self, frame):
! 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):
Index: PyShell.py
===================================================================
RCS file: /cvsroot/idlefork/idle/PyShell.py,v
retrieving revision 1.60
retrieving revision 1.61
diff -C2 -r1.60 -r1.61
*** PyShell.py 8 May 2003 20:26:54 -0000 1.60
--- PyShell.py 10 May 2003 00:09:52 -0000 1.61
***************
*** 691,695 ****
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("<<open-python-shell>>", self.flist.open_shell)
text.bind("<<toggle-jit-stack-viewer>>", self.toggle_jit_stack_viewer)
--- 691,695 ----
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("<<open-python-shell>>", self.flist.open_shell)
text.bind("<<toggle-jit-stack-viewer>>", self.toggle_jit_stack_viewer)
Index: rpc.py
===================================================================
RCS file: /cvsroot/idlefork/idle/rpc.py,v
retrieving revision 1.23
retrieving revision 1.24
diff -C2 -r1.23 -r1.24
*** rpc.py 8 May 2003 20:26:54 -0000 1.23
--- rpc.py 10 May 2003 00:09:52 -0000 1.24
***************
*** 559,564 ****
raise AttributeError, name
- __getattr__.DebuggerStepThrough = 1
-
def __getattributes(self):
self.__attributes = self.sockio.remotecall(self.oid,
--- 559,562 ----