[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 ----