This is the mail archive of the
gdb@sourceware.org
mailing list for the GDB project.
[patch] htdocs, news, reversible.html
- From: Michael Snyder <msnyder at vmware dot com>
- To: gdb at sourceware dot org
- Date: Mon, 07 Sep 2009 14:01:09 -0700
- Subject: [patch] htdocs, news, reversible.html
Hello,
I checked in the attached update to the gdb web page about reverse
debugging. Appologies for not seeking review comments first -- I
will welcome them now and be glad to post corrections or additions.
Michael
PS -- especially if I neglected to acknowledge anybody or mention
an existing reverse debug target!
Index: index.html
===================================================================
RCS file: /cvs/gdb/htdocs/news/index.html,v
retrieving revision 1.84
retrieving revision 1.86
diff -u -p -r1.84 -r1.86
--- index.html 27 Mar 2008 19:16:42 -0000 1.84
+++ index.html 7 Sep 2009 17:29:47 -0000 1.86
@@ -63,6 +63,19 @@ better.
-->
+<dt>September 6, 2009: <b>Update: Reverse Debugging</b></dt>
+<dd>
+<p> GDB version 7.0, due to be released later this month, will
+include the first public releases of reverse debugging and Process
+Record and Replay. See the
+<a href=http://sourceware.org/gdb/wiki/ReversibleDebugging> wiki page</a>.
+
+<p> The GDB maintainers are still looking for contributors interested
+in helping to extend and develop
+<a href="reversible.html">reverse debugging</a>.
+</p>
+</dd>
+
<dt>March 27, 2008: <b>GDB 6.8 Released!</b></dt>
<dd>
<p> The latest version of GDB, version 6.8, is available for <a
@@ -755,7 +768,7 @@ Floor, Boston, MA 02110-1301 USA.</p>
<p>Verbatim copying and distribution of this entire article is
permitted in any medium, provided this notice is preserved.</p>
-<p>Last modified 2008-03-27.</p>
+<p>Last modified 2009-09-06.</p>
</address>
</body>
Index: reversible.html
===================================================================
RCS file: /cvs/gdb/htdocs/news/reversible.html,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -p -r1.4 -r1.5
--- reversible.html 7 Aug 2007 23:48:49 -0000 1.4
+++ reversible.html 7 Sep 2009 01:34:38 -0000 1.5
@@ -9,7 +9,7 @@
<link rel="shortcut icon" type="image/x-icon" href="../../gdb/images/archer-fish.ico" />
<meta name="keywords" content="gdb" />
-<title>GDB and Reversible Debugging</title>
+<title>GDB and Reverse Debugging</title>
</head>
@@ -41,7 +41,7 @@ Fish]" /></a>
</small>
</center>
-<center><h2>GDB and Reversible Debugging</h2></center>
+<center><h2>GDB and Reverse Debugging</h2></center>
<!-- NB: CURRENT / LATEST refer to the trunk -->
<!-- NB: MOST RECENT refers to the branch -->
@@ -51,63 +51,82 @@ Fish]" /></a>
<h3>Overview</h3>
-<p>Reversible debugging (the ability to "step backwards" through a program)
-is an obviously powerful tool. GDB does not support it today, but the
-foundations have been laid, and the GDB maintainers are looking for
-contributors interested in expanding those foundations.</p>
+<p>GDB version 7.0 (due September 2009) will be the first public release
+of gdb to support reverse debugging (the ability to make the program
+being debugged step and continue in reverse). See the
+<a href=http://sourceware.org/gdb/wiki/ReversibleDebugging>wiki page</a>
+here.
-<h3>Prior work</h3>
+<p>Presently, only certain target debugging environments will support
+reverse debugging. Those targets currently include:
<ul>
-<li>Michael Snyder (while at Red Hat) contributed a checkpoint/restart
- implementation, which works on native GNU/Linux systems for
- limited single-threaded programs. It uses fork and other system
- calls directly in the debuggee to save state. This is included in
- GDB 6.5.</li>
-
-<li>Michael also implemented remote protocol support for communication with
- a reversible simulator. These patches have not been merged, but they
- should be fairly easy to merge; someone interested needs to restart
- the discussion. Some of the messages from the previous discussion are:
-
- <ul>
- <li><a href="http://sourceware.org/ml/gdb-patches/2006-03/msg00388.html">
- http://sourceware.org/ml/gdb-patches/2006-03/msg00388.html</a></li>
- <li><a href="http://sourceware.org/ml/gdb-patches/2006-04/msg00381.html">
- http://sourceware.org/ml/gdb-patches/2006-04/msg00381.html</a></li>
- <li><a href="http://sourceware.org/ml/gdb-patches/2006-03/msg00389.html">
- http://sourceware.org/ml/gdb-patches/2006-03/msg00389.html</a></li>
- <li><a href="http://sourceware.org/ml/gdb-patches/2006-03/msg00390.html">
- http://sourceware.org/ml/gdb-patches/2006-03/msg00390.html</a></li>
- </ul></li>
-
-<li>Dave Brolley has implemented support for reverse debugging in the Red
- Hat "sid" simulator for the xstormy16 architecture:
-
- <ul>
- <a href="http://sourceware.org/ml/sid/2006-q3/msg00047.html">
- http://sourceware.org/ml/sid/2006-q3/msg00047.html</a>
- </ul>
-
- (Note that sid is not a GNU project, but it is licensed under the GPL.)
- </li>
-</li>
+ <li> Native i386-linux ('target record')
+ <li> Native amd64-linux ('target record')
+ <li> Several remote targets, including:
+ <ul>
+ <li> <a href=http://moxielogic.org/blog> moxie-elf simulator </a>
+ <li> <a href=http://www.virtutech.com/getting_started/learn.html>
+ Simics </a>
+ <li> <a href=http://sources.redhat.com/sid> the SID simulator (xstormy16 architecture) </a>
+ <li> <a href=http://www.chiark.greenend.org.uk/~pmaydell/chronicle-gdbserver> chronicle-gdbserver using valgrind </a>
+ </ul>
</ul>
+<p>All of those targets, plus any additional ones in the future, will
+support a common user interface for reverse debugging in gdb, including
+the new commands:
+
+<ul>
+ <li> <b>reverse-continue</b> ('rc') -- Continue program being debugged but run it in reverse
+ <li> <b>reverse-finish</b> -- Execute backward until just before the selected stack frame is called
+ <li> <b>reverse-next</b> ('rn') -- Step program backward, proceeding through subroutine calls.
+ <li> <b>reverse-nexti</b> ('rni') -- Step backward one instruction, but proceed through called subroutines.
+ <li> <b>reverse-step</b> ('rs') -- Step program backward until it reaches the beginning of a previous source line
+ <li> <b>reverse-stepi</b> -- Step backward exactly one instruction
+ <li> <b>set exec-direction (forward/reverse)</b> -- Set direction of execution.<br>
+ All subsequent execution commands (continue, step, until etc.) will run the program being debugged in the selected direction.
+</ul>
+
+<p>Breakpoints and watchpoints will work in reverse -- allowing you for
+instance to proceed directly to the previous point at which a variable
+was modified.
+
<h3>Still to do</h3>
-<p>Once the basic commands are in GDB, it should be a simple matter of
-programming to add support for this to various existing GNU simulators. It
-could also be added either to native targets (perhaps based on the checkpoint /
-restart functionality) or to other third-party simulators for GNU/Linux and
-other platforms (such as valgrind, sid, or qemu).</p>
-
-<p>For the highest fidelity of reversible userspace debugging, some
-work on Linux and other kernels might also go a long way.</p>
-
-<p>The FSF and the GDB maintainers are interested in GDB contributions
-in this area. If anyone reading this is likewise interested in
-contributing to it, we would welcome your help!</p>
+<p>Now that the core GDB contains support for reverse debugging, it should
+be possible to add revese execution support to existing GNU simulators
+such as the ones built into GDB, as well as non-GNU targets such as
+valgrind, SID, and qemu.
+
+<p>For greater performance and fidelity in userspace and/or kernel reverse
+debugging, some work on GNU/Linux as well as other open source kernels
+might be done.
+
+<p>The built-in GDB target 'Process Record / Replay' currently only supports
+native reverse debugging on three platforms (i386-linux, amd64-linux, and
+moxie-elf). Volunteers are needed to extend this functionality to other
+GNU/Linux platforms, and even to other operating systems.
+
+<p>The FSF and GDB maintainers are eagerly seeking new volunteers and
+contributions in this area. If anyone reading this is interested in
+contributing to this leading edge area of research and development,
+we would welcome your help!
+
+<h3>Acknowledgements</h3>
+<ul>
+ <li> Tomas Holmberg contributed MI support for reverse debugging in Eclipse
+ <li> paawan oza contributed floating point reverse support for i386
+ <li> Anthony Green contributed a process record port for moxie-elf
+ <li> Hui Zhu contributed a process record port for amd64-linux
+ <li> Hui Zhu contributed the process record framework, along with
+ the original port for i386-linux
+ <li> Dave Brolley contributed a reversible SID simulator for xstormy16<br>
+ (Note that sid is not a GNU project, but it is licensed under the GPL.)
+ <li> Michael Snyder contributed the core gdb framework for reverse debugging
+ <li> All of the gdb maintainers are to be thanked for invaluable
+ discussion, suggestions, and code review.
+</ul>
<!-- /body, update below using ../../gdb/index.sh -->
@@ -150,7 +169,7 @@ Floor, Boston, MA 02110-1301 USA.</p>
<p>Verbatim copying and distribution of this entire article is
permitted in any medium, provided this notice is preserved.</p>
-<p>Last modified 2007-07-31.</p>
+<p>Last modified 2009-09-06.</p>
</address>
</body>