DebugClients/Python/DebugBase.py

branch
debugger fine grinding
changeset 5582
d829281d439f
parent 5573
4f85c1de060d
child 5587
ea526b78ee6c
equal deleted inserted replaced
5581:f8abf5f741ef 5582:d829281d439f
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

eric ide

mercurial