706 @keyparam applyTrace flag to assign trace function to fr.f_trace |
706 @keyparam applyTrace flag to assign trace function to fr.f_trace |
707 @type bool |
707 @type bool |
708 @return list of lists with file name (string), line number (integer) |
708 @return list of lists with file name (string), line number (integer) |
709 and function name (string) |
709 and function name (string) |
710 """ |
710 """ |
|
711 tb_lineno = None |
711 if frame is None: |
712 if frame is None: |
712 fr = self.getCurrentFrame() |
713 fr = self.getCurrentFrame() |
713 elif type(frame) == list: |
714 elif type(frame) == list: |
714 fr = frame.pop(0) |
715 fr, tb_lineno = frame.pop(0) |
715 else: |
716 else: |
716 fr = frame |
717 fr = frame |
717 |
718 |
718 stack = [] |
719 stack = [] |
719 while fr is not None: |
720 while fr is not None: |
730 if stack and os.path.basename(fname).startswith( |
731 if stack and os.path.basename(fname).startswith( |
731 ("DebugBase.py", "DebugClientBase.py", |
732 ("DebugBase.py", "DebugClientBase.py", |
732 "ThreadExtension.py", "threading.py")): |
733 "ThreadExtension.py", "threading.py")): |
733 break |
734 break |
734 |
735 |
735 fline = fr.f_lineno |
736 fline = tb_lineno or fr.f_lineno |
736 ffunc = fr.f_code.co_name |
737 ffunc = fr.f_code.co_name |
737 |
738 |
738 if ffunc == '?': |
739 if ffunc == '?': |
739 ffunc = '' |
740 ffunc = '' |
740 |
741 |
752 stack.append([fname, fline, ffunc, fargs]) |
753 stack.append([fname, fline, ffunc, fargs]) |
753 |
754 |
754 # is it a stack frame or exception list? |
755 # is it a stack frame or exception list? |
755 if type(frame) == list: |
756 if type(frame) == list: |
756 if frame != []: |
757 if frame != []: |
757 fr = frame.pop(0) |
758 fr, tb_lineno = frame.pop(0) |
758 else: |
759 else: |
759 fr = None |
760 fr = None |
760 else: |
761 else: |
761 fr = fr.f_back |
762 fr = fr.f_back |
762 |
763 |
884 stack = [] |
885 stack = [] |
885 if exctb: |
886 if exctb: |
886 frlist = self.__extract_stack(exctb) |
887 frlist = self.__extract_stack(exctb) |
887 frlist.reverse() |
888 frlist.reverse() |
888 |
889 |
889 self.currentFrame = frlist[0] |
890 self.currentFrame = frlist[0][0] |
890 stack = self.getStack(frlist[self.skipFrames:]) |
891 stack = self.getStack(frlist[self.skipFrames:]) |
891 |
892 |
892 self._dbgClient.lockClient() |
893 self._dbgClient.lockClient() |
893 self._dbgClient.currentThread = self |
894 self._dbgClient.currentThread = self |
894 self._dbgClient.currentThreadExec = self |
895 self._dbgClient.currentThreadExec = self |