DebugClients/Python/DebugBase.py

branch
debugger fine grinding
changeset 5582
d829281d439f
parent 5573
4f85c1de060d
child 5587
ea526b78ee6c
diff -r f8abf5f741ef -r d829281d439f DebugClients/Python/DebugBase.py
--- a/DebugClients/Python/DebugBase.py	Sun Mar 05 16:16:46 2017 +0100
+++ b/DebugClients/Python/DebugBase.py	Sun Mar 05 16:17:28 2017 +0100
@@ -752,10 +752,10 @@
         if frame.f_lineno == 0:
             return
         
+        self.isBroken = True
         self.currentFrame = frame
         stack = self.getStack(frame, applyTrace=True)
         
-        self.isBroken = True
         self._dbgClient.lockClient()
         self._dbgClient.currentThread = self
         self._dbgClient.currentThreadExec = self
@@ -848,16 +848,20 @@
         else:
             excvaltxt = str(excval)
         
+        # Don't step into libraries, which are used by our debugger methods
+        if exctb is not None:
+            self.stop_everywhere = False
+        
+        self.isBroken = True
+        
         stack = []
         if exctb:
             frlist = self.__extract_stack(exctb)
             frlist.reverse()
             
             self.currentFrame = frlist[0]
-            
             stack = self.getStack(frlist[self.skipFrames:])
         
-        self.isBroken = True
         self._dbgClient.lockClient()
         self._dbgClient.currentThread = self
         self._dbgClient.currentThreadExec = self
@@ -872,8 +876,11 @@
         self.skipFrames = 0
         
         self.isBroken = False
+        stop_everywhere = self.stop_everywhere
+        self.stop_everywhere = False
         self.eventPollFlag = False
         self._dbgClient.unlockClient()
+        self.stop_everywhere = stop_everywhere
     
     def __extractExceptionName(self, exctype):
         """
@@ -986,7 +993,7 @@
                         "dist-packages")) and not x.startswith(self.lib)]
             pathsToSkip.extend(localLib)
         
-        self.pathsToSkip = tuple(pathsToSkip)
+        self.pathsToSkip = tuple(set(pathsToSkip))
 
     def __skipFrame(self, frame):
         """

eric ide

mercurial