--- 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): """