750 """ |
750 """ |
751 # We never stop on line 0. |
751 # We never stop on line 0. |
752 if frame.f_lineno == 0: |
752 if frame.f_lineno == 0: |
753 return |
753 return |
754 |
754 |
|
755 self.isBroken = True |
755 self.currentFrame = frame |
756 self.currentFrame = frame |
756 stack = self.getStack(frame, applyTrace=True) |
757 stack = self.getStack(frame, applyTrace=True) |
757 |
758 |
758 self.isBroken = True |
|
759 self._dbgClient.lockClient() |
759 self._dbgClient.lockClient() |
760 self._dbgClient.currentThread = self |
760 self._dbgClient.currentThread = self |
761 self._dbgClient.currentThreadExec = self |
761 self._dbgClient.currentThreadExec = self |
762 |
762 |
763 self._dbgClient.sendResponseLine(stack) |
763 self._dbgClient.sendResponseLine(stack) |
846 except UnicodeError: |
846 except UnicodeError: |
847 excvaltxt = str(excval) |
847 excvaltxt = str(excval) |
848 else: |
848 else: |
849 excvaltxt = str(excval) |
849 excvaltxt = str(excval) |
850 |
850 |
|
851 # Don't step into libraries, which are used by our debugger methods |
|
852 if exctb is not None: |
|
853 self.stop_everywhere = False |
|
854 |
|
855 self.isBroken = True |
|
856 |
851 stack = [] |
857 stack = [] |
852 if exctb: |
858 if exctb: |
853 frlist = self.__extract_stack(exctb) |
859 frlist = self.__extract_stack(exctb) |
854 frlist.reverse() |
860 frlist.reverse() |
855 |
861 |
856 self.currentFrame = frlist[0] |
862 self.currentFrame = frlist[0] |
857 |
|
858 stack = self.getStack(frlist[self.skipFrames:]) |
863 stack = self.getStack(frlist[self.skipFrames:]) |
859 |
864 |
860 self.isBroken = True |
|
861 self._dbgClient.lockClient() |
865 self._dbgClient.lockClient() |
862 self._dbgClient.currentThread = self |
866 self._dbgClient.currentThread = self |
863 self._dbgClient.currentThreadExec = self |
867 self._dbgClient.currentThreadExec = self |
864 self._dbgClient.sendException(exctypetxt, excvaltxt, stack) |
868 self._dbgClient.sendException(exctypetxt, excvaltxt, stack) |
865 self._dbgClient.dumpThreadList() |
869 self._dbgClient.dumpThreadList() |
870 self._dbgClient.eventLoop(True) |
874 self._dbgClient.eventLoop(True) |
871 |
875 |
872 self.skipFrames = 0 |
876 self.skipFrames = 0 |
873 |
877 |
874 self.isBroken = False |
878 self.isBroken = False |
|
879 stop_everywhere = self.stop_everywhere |
|
880 self.stop_everywhere = False |
875 self.eventPollFlag = False |
881 self.eventPollFlag = False |
876 self._dbgClient.unlockClient() |
882 self._dbgClient.unlockClient() |
|
883 self.stop_everywhere = stop_everywhere |
877 |
884 |
878 def __extractExceptionName(self, exctype): |
885 def __extractExceptionName(self, exctype): |
879 """ |
886 """ |
880 Private method to extract the exception name given the exception |
887 Private method to extract the exception name given the exception |
881 type object. |
888 type object. |
984 pathsToSkip.append(self.lib) |
991 pathsToSkip.append(self.lib) |
985 localLib = [x for x in sys.path if x.endswith(("site-packages", |
992 localLib = [x for x in sys.path if x.endswith(("site-packages", |
986 "dist-packages")) and not x.startswith(self.lib)] |
993 "dist-packages")) and not x.startswith(self.lib)] |
987 pathsToSkip.extend(localLib) |
994 pathsToSkip.extend(localLib) |
988 |
995 |
989 self.pathsToSkip = tuple(pathsToSkip) |
996 self.pathsToSkip = tuple(set(pathsToSkip)) |
990 |
997 |
991 def __skipFrame(self, frame): |
998 def __skipFrame(self, frame): |
992 """ |
999 """ |
993 Private method to filter out debugger files. |
1000 Private method to filter out debugger files. |
994 |
1001 |