]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Prevent debugger from stepping into Idle rpc code
authorChui Tey <chui.tey@advdata.com.au>
Thu, 12 Dec 2002 20:53:19 +0000 (20:53 +0000)
committerChui Tey <chui.tey@advdata.com.au>
Thu, 12 Dec 2002 20:53:19 +0000 (20:53 +0000)
Lib/idlelib/Debugger.py

index 0270f0c36bac033049f763a292b3a36399a3a1f7..a82fdbb21b579bb1614d8a628ad7be6d34973f2f 100644 (file)
@@ -13,13 +13,23 @@ class Idb(bdb.Bdb):
         bdb.Bdb.__init__(self)
 
     def user_line(self, frame):
-        # get the currently executing function
-        ##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
+
         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"
@@ -27,7 +37,9 @@ class Idb(bdb.Bdb):
                 return
         except:
             pass
-        if co_filename in ('rpc.py', '<string>'):
+
+        # workaround for the problem above
+        if co_filename in (r'.\rpc.py', 'rpc.py','<string>'):
             self.set_step()
             return
         if co_filename.endswith('threading.py'):