This is the mail archive of the gdb@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[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>

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]