X-Git-Url: https://git.sthu.org/?p=pygdb.git;a=blobdiff_plain;f=GdbTerminal.py;h=12256c1d0066e73b4d1f80dc69afbceae38f1cc8;hp=3ced460da3f2146ae6b405e4216b6f5c9b1588c0;hb=0024f43ac5834f611179587a6fc25385ee5bf4a5;hpb=0baefa6d07dd6f0891dc5541e8c79721c4340109 diff --git a/GdbTerminal.py b/GdbTerminal.py index 3ced460..12256c1 100755 --- a/GdbTerminal.py +++ b/GdbTerminal.py @@ -20,40 +20,67 @@ class GdbTerminal (DbgTerminal.DbgTerminal): def __init__(self, clientCmd): DbgTerminal.DbgTerminal.__init__(self, clientCmd) - def getDbgArgv(self): + def getArgv(self): return ["gdb", "--fullname", string.split(self.clientCmd)[0]] - def setDbgPty(self, pty): + def setPty(self, pty): ttyname = os.ttyname(pty) self.feed_dbg("set inferior-tty %s\n" % (ttyname,)) - def setDbgRun(self): + def setRun(self): + + his = self.getHistoryLen() argv = string.join(string.split(self.clientCmd)[1:]) self.feed_dbg("run " + argv + "\n") + return self.waitForPosition(his) - def setDbgQuit(self): - self.feed_dbg("quit\n") - self.waitForDbgNewline() - self.feed_dbg("y\n"); - def setDbgContinue(self): + def setContinue(self): + his = self.getHistoryLen() self.feed_dbg("cont\n"); + return self.waitForPosition(his) + + def setStepover(self): + his = self.getHistoryLen() + self.feed_dbg("next\n"); + return self.waitForPosition(his) + + def setStepin(self): + his = self.getHistoryLen() + self.feed_dbg("step\n"); + return self.waitForPosition(his) + + def setQuit(self): + self.feed_dbg("quit\n") + self.waitForNewline() + self.feed_dbg("y\n"); - def setDbgBreakpoint(self, file, lineno): + def setBreakpoint(self, file, lineno): self.feed_dbg("break %s:%d\n" % (file, lineno)) - def getDbgExpression(self, expr): + def getExpression(self, expr): his = self.getHistoryLen() self.feed_dbg("print " + expr + "\n") rx = re.compile("^\$[1-9][0-9]* = .*$") - his, response = self.waitForDbgRx(rx, his) + his, response = self.waitForRx(rx, his) split = string.split(response, "=") return string.join(split[1:], "=").strip() + def waitForPosition(self, his): + rx = re.compile("^\(gdb\) $") + his, reponse = self.waitForRx(rx,his) + + if self.history[his-1][0:2]=="\x1a\x1a": + tuples = string.split(self.history[his-1][2:], ":") + return tuples[0:2] + + return None + + if __name__ == "__main__":