From: Michael Snyder <msnyder@vmware.com>
To: Hui Zhu <teawater@gmail.com>
Cc: "gdb@sourceware.org" <gdb@sourceware.org>, paawan1982@yahoo.com
Subject: Re: [patch] htdocs, news, reversible.html
Date: Tue, 08 Sep 2009 00:55:00 -0000 [thread overview]
Message-ID: <4AA5AB1C.1030906@vmware.com> (raw)
In-Reply-To: <daef60380909071628r14f00ccdmd3cde79de6d23d2d@mail.gmail.com>
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>
>>
>>
next prev parent reply other threads:[~2009-09-08 0:55 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-09-07 21:02 Michael Snyder
2009-09-07 23:29 ` Hui Zhu
2009-09-08 0:55 ` Michael Snyder [this message]
2009-09-09 13:33 ` Greg Law
2009-09-09 20:30 ` Michael Snyder
2009-09-10 7:42 ` Greg Law
2009-09-10 17:50 ` Michael Snyder
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4AA5AB1C.1030906@vmware.com \
--to=msnyder@vmware.com \
--cc=gdb@sourceware.org \
--cc=paawan1982@yahoo.com \
--cc=teawater@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox