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]

Re: [patch] htdocs, news, reversible.html


Hui Zhu wrote:
Hi Michael,

Thanks for your works.

+ <li> paawan oza contributed floating point reverse support for i386

Maybe it should be "Paawan Oza".

Well, but that's the way he signs it, and how it appears in his email. Hey Oza, how would you like your name to appear in the acknowlegements? Capitalized, or no? Here's the web page:

http://sourceware.org/gdb/news/reversible.html

On Tue, Sep 8, 2009 at 05:01, Michael Snyder<msnyder@vmware.com> wrote:
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]