X-Git-Url: https://git.sthu.org/?p=pygdb.git;a=blobdiff_plain;f=GdbTerminal.py;h=af0368bdcaa670154ab2ca9d49ebd71c4178a64c;hp=5be9c05fd165108449fd97150b6712762ee67350;hb=054603bd7ceb0cb917a45cb56bc7266ca3733c14;hpb=382465d6c2f07b99c0263314405d1d8411072d23 diff --git a/GdbTerminal.py b/GdbTerminal.py index 5be9c05..af0368b 100644 --- a/GdbTerminal.py +++ b/GdbTerminal.py @@ -36,6 +36,22 @@ class GdbTerminal (DbgTerminal.DbgTerminal): def setStepin(self): self.feed_child("step\n"); + def setStepout(self): + bt = self.getBacktrace() + + if len(bt) < 2: + self.setContinue() + + else: + #Get the second line + sec = bt[1] + + #Check if it is a backtrace line + if re.compile("^#1\s+.*\s\S+:\d+$").search(sec): + pos = string.split(sec)[-1] + self.feed_child("advance %s\n" % pos) + + def setQuit(self): self.feed_child("quit\n") self.waitForNewline() @@ -79,8 +95,8 @@ class GdbTerminal (DbgTerminal.DbgTerminal): bplines = self.__getAnswerFromCmd("info breakpoints\n") rxbp = re.compile("^\d+\s+breakpoint") - rxpos = re.compile("^.* at \S+:\d+$") - rxcond = re.compile("^\tstop only if") + rxpos = re.compile("^.*at \S+:\d+$") + rxcond = re.compile("^\s+stop only if") bpnts = [] i = 1 @@ -97,13 +113,18 @@ class GdbTerminal (DbgTerminal.DbgTerminal): no = string.split(line)[0] #This line does not contain the file! + #Check for next line... + if not rxpos.search(line): + i += 1 if not rxpos.search(line): + i += 1 continue pos = string.split(line)[-1] [file,lineno] = string.split(pos,":") cond = None + #Look for conditions if i+1