This is the mail archive of the 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 []
> Sent: Friday, September 11, 2015 11:02 AM
> To: Pedro Alves
> Cc: Metzger, Markus T;
> Subject: Re: [PATCH v2 17/17] infrun: scheduler-locking reverse
> > Date: Fri, 11 Sep 2015 09:55:41 +0100
> > From: Pedro Alves <>
> > CC:

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

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.


Intel Deutschland GmbH
Registered Address: Am Campeon 10-12, 85579 Neubiberg, Germany
Tel: +49 89 99 8853-0,
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]