Re: Reverse debugging

Hui Zhu
2009-07-16T03:05:53Z

On Tue, Jul 14, 2009 at 09:28, Nick Roberts<nickrob@snap.net.nz> wrote:
>  > That's because target exec does not support reverse,
>  > but target record does.  Reverse is also potentially
>  > supported under target remote, depending on what remote
>  > target you're connected to.
>  >
>  > > In the "Reverse Execution" node of the GDB manual it talks about
>  > > "a target environment that supports reverse execution" but doesn't clarify
>  > > what those targets are.  The node "Process Record and Replay" comes next
>  > > in the manual but these two seem to be inimately related.
>  >
>  > Process record (target record) is one of a small number of
>  > targets that currently support reverse debugging.  The others,
>  > so far, are all remote targets (eg. SID from Red Hat, and
>  > Simics from Virtutech).
>  >...
>
> Thanks for these answers, I find them more lucid than the manual.  If I try
> to reverse a remote target using gdbserver (actually on host/local machine -
> x86_64 this time), I'm not told that the target doesn't support this command
> but reverse-next works just like next until I hit a function:
>
> (gdb) reverse-next
>
> Program received signal SIGTRAP, Trace/breakpoint trap.
> 0x0000000000400521 in printf@plt ()
> Current language:  auto; currently asm
> (gdb)

Looks like you use an old gdb-cvs version with amd64,right?

1. Please use the head version of gdb. It will tell you that amd64
doesn't support prec now.
2. You can try the patch that I post to make gdb support amd64. You
can get the link and other message from
http://sourceware.org/gdb/wiki/ReversibleDebugging

Thanks,
Hui