[pypy-commit] pypy reverse-debugger: UI tweaks

arigo pypy.commits at gmail.com
Wed Aug 31 21:22:39 EDT 2016


Author: Armin Rigo <arigo at tunes.org>
Branch: reverse-debugger
Changeset: r86806:abac6184118c
Date: 2016-09-01 02:31 +0100
http://bitbucket.org/pypy/pypy/changeset/abac6184118c/

Log:	UI tweaks

diff --git a/pypy/interpreter/reverse_debugging.py b/pypy/interpreter/reverse_debugging.py
--- a/pypy/interpreter/reverse_debugging.py
+++ b/pypy/interpreter/reverse_debugging.py
@@ -643,11 +643,18 @@
         try:
             lineno = int(name)
         except ValueError:
+            if name.endswith('()'):
+                n = len(name) - 2
+                assert n >= 0
+                name = name[:n]
             if not valid_identifier(name):
                 revdb.send_output(
                     'Note: "%s()" doesn''t look like a function name. '
                     'Setting breakpoint anyway\n' % name)
             add_breakpoint_funcname(name, i)
+            name += '()'
+            if name != original_name:
+                revdb.send_change_breakpoint(i, name)
             return
         # "number" does the same as ":number"
         filename = ''
@@ -656,8 +663,7 @@
         try:
             lineno = int(name[j+1:])
         except ValueError:
-            revdb.send_output('"%s": expected a line number after colon\n' % (
-                name,))
+            revdb.send_output('expected a line number after colon\n')
             revdb.send_change_breakpoint(i)
             return
         filename = name[:j]
diff --git a/pypy/interpreter/test/test_reverse_debugging.py b/pypy/interpreter/test/test_reverse_debugging.py
--- a/pypy/interpreter/test/test_reverse_debugging.py
+++ b/pypy/interpreter/test/test_reverse_debugging.py
@@ -92,10 +92,13 @@
 def test_add_breakpoint():
     check_add_breakpoint('', expected_output="Empty breakpoint name\n",
                          expected_chbkpt='')
-    check_add_breakpoint('foo42', expected_funcname="foo42")
+    check_add_breakpoint('foo42', expected_funcname="foo42",
+                         expected_chbkpt="foo42()")
+    check_add_breakpoint('foo42()', expected_funcname="foo42")
     check_add_breakpoint('foo.bar', expected_funcname="foo.bar",
         expected_output='Note: "foo.bar()" doesn''t look like a function name.'
-                        ' Setting breakpoint anyway\n')
+                        ' Setting breakpoint anyway\n',
+        expected_chbkpt="foo.bar()")
     check_add_breakpoint('<foo.bar>', expected_funcname="<foo.bar>")
     check_add_breakpoint('42', curfilename='abcd',
                          expected_fileline=('abcd', 42),
@@ -109,5 +112,5 @@
     check_add_breakpoint('abcd.py:42',
                          expected_fileline=('abcd.py', 42))
     check_add_breakpoint('42:abc',
-        expected_output='"42:abc": expected a line number after colon\n',
+        expected_output='expected a line number after colon\n',
         expected_chbkpt='')
diff --git a/rpython/translator/revdb/interact.py b/rpython/translator/revdb/interact.py
--- a/rpython/translator/revdb/interact.py
+++ b/rpython/translator/revdb/interact.py
@@ -417,23 +417,27 @@
             print "Break where?"
             return
         num = self._bp_new(argument, 'B', argument)
+        self.pgroup.update_breakpoints()
         b = self.pgroup.edit_breakpoints()
-        old = b.num2break[num]
-        self.pgroup.update_breakpoints()
-        new = b.num2break.get(num)
-        if old == new:
-            print "Breakpoint %d added" % (num,)
-        elif new is None:
+        if num not in b.num2break:
             print "Breakpoint not added"
         else:
             kind, name = self._bp_kind(num)
-            print "Breakpoint %d added as: %s" % (num, name)
+            print "Breakpoint %d added: %s" % (num, name)
     command_b = command_break
 
     def command_delete(self, argument):
         """Delete a breakpoint/watchpoint"""
-        arg = int(argument)
         b = self.pgroup.edit_breakpoints()
+        try:
+            arg = int(argument)
+        except ValueError:
+            for arg in b.num2break:
+                if self._bp_kind(arg)[1] == argument:
+                    break
+            else:
+                print "No such breakpoint/watchpoint: %s" % (argument,)
+                return
         if arg not in b.num2break:
             print "No breakpoint/watchpoint number %d" % (arg,)
         else:
@@ -443,6 +447,7 @@
             b.watchvalues.pop(arg, '')
             b.watchuids.pop(arg, '')
             print "%s %d deleted: %s" % (kind.capitalize(), arg, name)
+    command_del = command_delete
 
     def command_watch(self, argument):
         """Add a watchpoint (use $NUM in the expression to watch)"""
diff --git a/rpython/translator/revdb/process.py b/rpython/translator/revdb/process.py
--- a/rpython/translator/revdb/process.py
+++ b/rpython/translator/revdb/process.py
@@ -236,7 +236,7 @@
                 if msg.extra:
                     b.set_num2break(msg.arg1, 'B', msg.extra)
                 else:
-                    del b.set_num2break[msg.arg1]
+                    del b.num2break[msg.arg1]
             else:
                 print >> sys.stderr, "unexpected %r" % (msg,)
 


More information about the pypy-commit mailing list