new exciting GTK Main Control Window
[pygdb.git] / GdbTerminal.py
1 #!/usr/bin/python
2 #shuber, 2008-06-04
3
4 __author__ = "shuber"
5
6
7 import gtk
8 import os
9 import re
10 import string
11 import sys
12 import time
13
14 import DbgTerminal
15
16
17 class GdbTerminal (DbgTerminal.DbgTerminal):
18
19
20 def __init__(self, clientCmd):
21 DbgTerminal.DbgTerminal.__init__(self, clientCmd)
22
23 def getDbgArgv(self):
24 return ["gdb", "--fullname", string.split(self.clientCmd)[0]]
25
26 def setDbgPty(self, pty):
27 ttyname = os.ttyname(pty)
28 self.feed_dbg("set inferior-tty %s\n" % (ttyname,))
29
30 def setDbgRun(self):
31 argv = string.join(string.split(self.clientCmd)[1:])
32 self.feed_dbg("run " + argv + "\n")
33
34 def setDbgQuit(self):
35 self.feed_dbg("quit\n")
36 self.waitForDbgNewline()
37 self.feed_dbg("y\n");
38
39 def setDbgContinue(self):
40 self.feed_dbg("cont\n");
41
42 def setDbgBreakpoint(self, file, lineno):
43 self.feed_dbg("break %s:%d\n" % (file, lineno))
44
45 def getDbgExpression(self, expr):
46
47 his = self.getHistoryLen()
48 self.feed_dbg("print " + expr + "\n")
49
50 rx = re.compile("^\$[1-9][0-9]* = .*$")
51 his, response = self.waitForDbgRx(rx, his)
52
53 split = string.split(response, "=")
54 return string.join(split[1:], "=").strip()
55
56
57
58 if __name__ == "__main__":
59
60
61 dbgterm = GdbTerminal(string.join(sys.argv[1:]))
62 dbgwnd = DbgTerminal.DbgWindow(dbgterm)
63
64 DbgTerminal.launchDebugger(dbgwnd, dbgterm)
65
66
67
68