DebugClients/Python3/DebugBase.py

branch
debugger speed
changeset 5086
6cb8be573090
parent 5085
85dfb7886fb9
child 5087
59316f14216b
diff -r 85dfb7886fb9 -r 6cb8be573090 DebugClients/Python3/DebugBase.py
--- a/DebugClients/Python3/DebugBase.py	Mon Aug 08 22:38:07 2016 +0200
+++ b/DebugClients/Python3/DebugBase.py	Mon Aug 08 22:50:36 2016 +0200
@@ -362,23 +362,27 @@
         Public method to start debugging from 'frame'.
 
         If frame is not specified, debugging starts from caller's frame.
+        Because of jump optimizations it's not possible to use sys.breakpoint()
+        as last instruction in a function or method.
         
-        @param frame frame to start debugging from
+        @keyparam frame frame to start debugging from
         @type frame object
         """
         if frame is None:
-            frame = sys._getframe().f_back
+            frame = sys._getframe().f_back  # Skip set_trace method
         
-        # stop at erics debugger frame
-        while frame:
-            if not self.__skipFrame(frame):
+        frame.f_trace = self.trace_dispatch
+        while frame is not None:
+            # stop at erics debugger frame
+            if frame.f_back.f_code == self._dbgClient.handleLine.__code__:
                 frame.f_trace = self.trace_dispatch
+                self.botframe = frame
+                self._dbgClient.mainFrame = frame
+                break
+            
             frame = frame.f_back
-            self.botframe = frame
-            if self.__skipFrame(frame):
-                break
         
-        self.set_step()
+        self.stop_everywhere = True
         sys.settrace(self.trace_dispatch)
         sys.setprofile(self._dbgClient.callTraceEnabled)
     

eric ide

mercurial