added missing 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 getArgv(self):
24 return ["gdb", "--fullname", string.split(self.clientCmd)[0]]
25
26 def setPty(self, pty):
27 ttyname = os.ttyname(pty)
28 self.feed_dbg("set inferior-tty %s\n" % (ttyname,))
29
30 def setRun(self):
31
32 his = self.getHistoryLen()
33 argv = string.join(string.split(self.clientCmd)[1:])
34 self.feed_dbg("run " + argv + "\n")
35 return self.waitForPosition(his)
36
37
38 def setContinue(self):
39 his = self.getHistoryLen()
40 self.feed_dbg("cont\n");
41 return self.waitForPosition(his)
42
43 def setStepover(self):
44 his = self.getHistoryLen()
45 self.feed_dbg("next\n");
46 return self.waitForPosition(his)
47
48 def setStepin(self):
49 his = self.getHistoryLen()
50 self.feed_dbg("step\n");
51 return self.waitForPosition(his)
52
53 def setQuit(self):
54 self.feed_dbg("quit\n")
55 self.waitForNewline()
56 self.feed_dbg("y\n");
57
58 def setBreakpoint(self, file, lineno):
59 self.feed_dbg("break %s:%d\n" % (file, lineno))
60
61 def getExpression(self, expr):
62
63 his = self.getHistoryLen()
64 self.feed_dbg("print " + expr + "\n")
65
66 rx = re.compile("^\$[1-9][0-9]* = .*$")
67 his, response = self.waitForRx(rx, his)
68
69 split = string.split(response, "=")
70 return string.join(split[1:], "=").strip()
71
72
73 def waitForPosition(self, his):
74 rx = re.compile("^\(gdb\) $")
75 his, reponse = self.waitForRx(rx,his)
76
77 if self.history[his-1][0:2]=="\x1a\x1a":
78 tuples = string.split(self.history[his-1][2:], ":")
79 return tuples[0:2]
80
81 return None
82
83
84
85 if __name__ == "__main__":
86
87
88 dbgterm = GdbTerminal(string.join(sys.argv[1:]))
89 dbgwnd = DbgTerminal.DbgWindow(dbgterm)
90
91 DbgTerminal.launchDebugger(dbgwnd, dbgterm)
92 gtk.main()
93
94
95
96