X-Git-Url: https://git.sthu.org/?a=blobdiff_plain;f=GdbTerminal.py;h=f8a8614e1f3c7dd1040f616d52987233894fe74d;hb=5d8a5dbbe84a2c74de62e5c83eabd06081512e48;hp=5be9c05fd165108449fd97150b6712762ee67350;hpb=382465d6c2f07b99c0263314405d1d8411072d23;p=pygdb.git diff --git a/GdbTerminal.py b/GdbTerminal.py index 5be9c05..f8a8614 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+\S+:\d+$") + rxcond = re.compile("^\s+stop only if") bpnts = [] i = 1 @@ -97,13 +113,19 @@ 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 + line = bplines[i] + 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