new feature: selecting on breakpoint sets entry-ctrl-text
[pygdb.git] / GdbTerminal.py
index 77d21e2f6e3fbffab0c3143214bca2ff1dd8db31..304e39ab622185cd2132e616fe17c0cd5c89b261 100755 (executable)
@@ -25,66 +25,66 @@ class GdbTerminal (DbgTerminal.DbgTerminal):
 
        def setPty(self, pty):
                ttyname = os.ttyname(pty)
-               self.feed_dbg("set inferior-tty %s\n" % (ttyname,))
+               self.feed_child("set inferior-tty %s\n" % (ttyname,))
 
        def setRun(self):
 
                his = self.getHistoryLen()
                argv = string.join(string.split(self.clientCmd)[1:])
-               self.feed_dbg("run " + argv + "\n")
+               self.feed_child("run " + argv + "\n")
                return self.waitForActivation(his)
 
-
        def setContinue(self):
                his = self.getHistoryLen()
-               self.feed_dbg("cont\n");
+               self.feed_child("cont\n");
                return self.waitForActivation(his)
 
        def setStepover(self):
                his = self.getHistoryLen()
-               self.feed_dbg("next\n");
+               self.feed_child("next\n");
                return self.waitForActivation(his)
 
        def setStepin(self):
                his = self.getHistoryLen()
-               self.feed_dbg("step\n");
+               self.feed_child("step\n");
                return self.waitForActivation(his)
 
        def setQuit(self):
-               self.feed_dbg("quit\n")
+               self.feed_child("quit\n")
                self.waitForNewline()
-               self.feed_dbg("y\n");
+               self.feed_child("y\n");
 
        def setBreakpoint(self, file, lineno, condition=None):
                his = self.getHistoryLen()
                if condition==None:
-                       self.feed_dbg("break %s:%s\n" % (file, str(lineno)))
+                       self.feed_child("break %s:%s\n" % (file, str(lineno)))
                else:
-                       self.feed_dbg("break %s:%s if %s\n" % \
+                       self.feed_child("break %s:%s if %s\n" % \
                                        (file, str(lineno), condition))
 
-               rx = re.compile("^Breakpoint |^No|^\(gdb\) ")
+               rx = re.compile("^Breakpoint |^No |^\(gdb\) ")
                his, response = self.waitForRx(rx, his)
 
-
                if response[0:10] == "Breakpoint":
                        return string.split(response)[1].strip()
-               if response[0:5] == "(gdb)":
-                       return None
+
                if response[0:14] == "No source file":
-                       self.feed_dbg("n\n");
-                       return None
-               if response[0:3] == "No ":
+                       self.feed_child("n\n");
                        return None
-                       
-               return NotImplementedError()
+
+               #Wait again for gdb
+               if response[0:5] != "(gdb)":
+                       his, response = self.waitForRx(rx,his)
+
+               return None
+
 
        def delBreakpoint(self, breakpoint):
-               self.feed_dbg("del breakpoint %s\n" % (breakpoint,))
+               self.feed_child("del breakpoint %s\n" % (breakpoint,))
 
        def getBreakpoints(self):
                starthis = self.getHistoryLen()
-               self.feed_dbg("info breakpoints\n")
+               self.feed_child("info breakpoints\n")
 
                rx = re.compile("^\(gdb\) ")
                endhis, response = self.waitForRx(rx, starthis)
@@ -102,7 +102,6 @@ class GdbTerminal (DbgTerminal.DbgTerminal):
                        line = bplines[i]
 
                        if not rxbp1.search(line):
-                               print "Warning GdbTerminal.getBreakpoints at line", line
                                i += 1
                                continue
 
@@ -128,7 +127,7 @@ class GdbTerminal (DbgTerminal.DbgTerminal):
        def getExpression(self, expr):
 
                his = self.getHistoryLen()
-               self.feed_dbg("print " + expr + "\n")
+               self.feed_child("print " + expr + "\n")
 
                rx = re.compile("^\(gdb\) $")
                his, response = self.waitForRx(rx, his)
@@ -142,7 +141,7 @@ class GdbTerminal (DbgTerminal.DbgTerminal):
                return string.join(split[1:], "=").strip()
 
 
-       def waitForActivation(self, his):
+       def waitForActivation(self, his=None):
 
                self.setActive(False)
                rx = re.compile("^\(gdb\) $")
@@ -163,7 +162,6 @@ if __name__ == "__main__":
        dbgterm = GdbTerminal(string.join(sys.argv[1:]))
        dbgwnd = DbgTerminal.DbgWindow(dbgterm)
 
-       DbgTerminal.launchDebugger(dbgwnd, dbgterm)
        gtk.main()