This is the mail archive of the gdb-patches@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 v2 17/17] infrun: scheduler-locking reverse


> -----Original Message-----
> From: Eli Zaretskii [mailto:eliz@gnu.org]
> Sent: Friday, September 11, 2015 11:02 AM
> To: Pedro Alves
> Cc: Metzger, Markus T; gdb-patches@sourceware.org
> Subject: Re: [PATCH v2 17/17] infrun: scheduler-locking reverse
> 
> > Date: Fri, 11 Sep 2015 09:55:41 +0100
> > From: Pedro Alves <palves@redhat.com>
> > CC: gdb-patches@sourceware.org

The second paragraph of [1] says "When this [record] target is in use, if the
execution log includes the record for the next instruction, gdb will debug in
replay mode.".

Following this definition of "replay mode", I agree with Eli's first suggestion
to call the new scheduler-locking mode "replay".

I'm avoiding the term "replay" since esp. record btrace does not replay in the
sense of "re-execute the program".  All it does is move the PC around.  Record
full does a bit more but it is still not re-executing the program.


> > I'll admit that when reviewing this, I also noticed that the setting
> > applies both when stepping backwards, and when replaying forward,
> > and wondered whether that would be confusing.
> >
> > Do we call reverse execution "replay" too?  The docs are a bit confusing
> > on this, sometimes it looks like we do, sometimes not.  E.g., [1]
> >
> >   When debugging in the reverse direction, gdb will work in replay mode as
> >   long as the execution log includes the record for the previous instruction;
> >   otherwise, it will work in record mode, if the platform supports reverse
> >   execution, or stop if not.
> >
> > [1] - https://sourceware.org/gdb/onlinedocs/gdb/Process-Record-and-
> Replay.html#Process-Record-and-Replay
> >
> > I think the "If the platform supports reverse execution" part is talking
> > about when the remote target supports reverse debugging directly,
> > like e.g., Qemu / Simics / VMWare(?).
> >
> > But then it seems confusing to call reverse stepping "record mode",
> > as in "if it's rewinding time, what it is recording??".

It looks like "replay" mode means that GDB is executing from its (own)
execution log; "record" mode means that GDB is extending its execution
log.

Traditionally, GDB records when stepping forward from the end of the
execution log.  On targets that support native reverse-stepping, however,
GDB is able to extend its execution log also when stepping backward from
the beginning of GDB's execution log.

This doesn't work with record btrace.

Regards,
Markus.

Intel Deutschland GmbH
Registered Address: Am Campeon 10-12, 85579 Neubiberg, Germany
Tel: +49 89 99 8853-0, www.intel.de
Managing Directors: Christin Eisenschmid, Prof. Dr. Hermann Eul
Chairperson of the Supervisory Board: Tiffany Doon Silva
Registered Office: Munich
Commercial Register: Amtsgericht Muenchen HRB 186928


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