[pypy-commit] extradoc extradoc: Clarification, and add conclusion
arigo
pypy.commits at gmail.com
Fri Jul 8 05:57:25 EDT 2016
Author: Armin Rigo <arigo at tunes.org>
Branch: extradoc
Changeset: r5649:f87456e7127d
Date: 2016-07-08 11:59 +0200
http://bitbucket.org/pypy/extradoc/changeset/f87456e7127d/
Log: Clarification, and add conclusion
diff --git a/blog/draft/revdb.rst b/blog/draft/revdb.rst
--- a/blog/draft/revdb.rst
+++ b/blog/draft/revdb.rst
@@ -110,9 +110,17 @@
get the failure. But once we got the failure, then we're done with
this step.)
-Start ``rpython/translator/revdb/revdb.py log.rdb``. We get a
-pdb-style debugger. Initially, we are at the start of the program
-(not at the end, like we'd get in a regular debugger)::
+Start::
+
+ rpython/translator/revdb/revdb.py log.rdb
+
+We get a pdb-style debugger. This ``revdb.py`` is a normal Python
+program, which you run with an unmodified Python; internally, it looks
+inside the log for the path to ``pypy-revdb`` and run it as needed (as
+one forking subprocess, in a special mode).
+
+Initially, we are at the start of the program---not at the end, like
+we'd get in a regular debugger::
File "<builtin>/app_main.py", line 787 in setup_bootstrap_path:
(1)$
@@ -121,6 +129,7 @@
Go to the end with ``continue`` (or ``c``)::
+ (1)$ continue
File "/tmp/x.py", line 14 in <module>:
...
lst1 = [Foo() for i in range(100)]
@@ -139,7 +148,7 @@
backward with the ``bstep`` command (backward step, or ``bs``), line
by line, and forward again with the ``step`` command. There are also
commands ``bnext``, ``bcontinue`` and ``bfinish`` and their forward
-equivalents. There is also ``go TIME`` to jump directly to the specified
+equivalents. There is also "``go TIME``" to jump directly to the specified
time. (Right now the debugger only stops at "line start"
events, not at function entry or exit, which makes some cases a bit
surprising: for example, a ``step`` from the return statement of
@@ -381,8 +390,8 @@
have side-effects; these effects are discarded as soon as you move
in time again.
-- sometimes even ``p import foo`` will fail with ``Attempted to do
- I/O``. Use instead ``p import sys; foo = sys.modules['foo']``.
+- sometimes even "``p import foo``" will fail with ``Attempted to do
+ I/O``. Use instead "``p import sys; foo = sys.modules['foo']``".
- use ``help`` to see all commands. ``backtrace`` can be useful.
There is no ``up`` command; you have to move in time instead,
@@ -481,3 +490,32 @@
.. _`reverse debugging`: https://en.wikipedia.org/wiki/Debugger#Reverse_debugging
.. _`undodb-gdb`: http://undo.io/
.. _`rr`: http://rr-project.org/
+
+
+Future work
+-----------
+
+As mentioned above, it is alpha-level, and only works on Linux with ASLR
+disabled. So the plans for the immediate future are to fix the various
+issues described above, and port to more operating systems and remove
+the restriction that requires a non-ASLR system. The core of the system
+is in the C file and headers in ``rpython/translator/revdb/src-revdb``.
+
+For interested people, there is also the Duhton_ interpreter and its
+``reverse-debugger`` branch, which is where I prototyped the RPython
+concept before moving to PyPy. The basics should work for any
+interpreter written in RPython, but they require some specific code to
+interface with the language; in the case of PyPy, it is in
+``pypy/interpreter/reverse_debugging.py``.
+
+.. _Duhton: https://bitbucket.org/pypy/duhton/
+
+In parallel, there are various user interface improvements that people
+could be interested in, like a more "pdb++" experience. (And the script
+at ``rpython/translator/revdb/revdb.py`` should be moved out into some
+more "official" place, and the ``reverse-debugger`` branch should be
+merged back to default.)
+
+I would certainly welcome any help!
+
+-+- Armin
More information about the pypy-commit
mailing list