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: [FYI] tutorial for process record and reverse debugging


Marc Khouzam wrote:
-----Original Message-----
From: gdb-owner@sourceware.org [mailto:gdb-owner@sourceware.org] On Behalf Of Michael Snyder
Sent: Saturday, October 17, 2009 6:57 PM
To: gdb@sourceware.org
Subject: [FYI] tutorial for process record and reverse debugging


FYI, there is now a tutorial for process record/replay and reverse debugging on the gdb wiki:

http://sourceware.org/gdb/wiki/ProcessRecord/Tutorial

Very clearly written. It should be very useful.


I even learned that the following was a wanted behavior:

"We can go directly to the point at which the recording currently ends, by disabling all our breakpoints and then telling gdb to continue. Process record will replay until it reaches the current end of the recording, and then stop."

I don't know how well thought-out the current behavior is. It could be worth discussing. What I described in my tutorial is the behavior we've got, not necessarily the behavior we set out to achieve.

To be honest, I never cared much for this behavior because from an Eclipse user-experience, it is not very clear why the execution/replay suddenly stops in this case.

OK, well, let's talk about it.


Seems to me that if you're replaying, and you reach the end of the
recorded log, at least one natural thing to do is to stop.  Could be
that another natural thing to do would be to automatically switch
from replay mode to record mode and keep going -- but I'm not sure
if I could safely assume that that was the user's desire.

Sounds like a case for a query, and/or a user-settable mode.

It sometimes seems to me that we have too many queries already,
but maybe we can keep them under control with user-settable modes.

Helpful to talk about them in advance, though...

But from reading the tutorial I see that it may be of interest in some situations.
What bothers me though is that one must disable all breakpoints and then re-enable them. This can be a bit of an annoyance, especially if some bps were already disabled.
I got to wonder if this doesn't call for a new command; something like
"record live", which would take us to the end of the recording while not needing the
user to deal with existing breakpoints.

Yeah, the "disable all breakpoints and continue" business was something that I just came up with on the spot.

However, rather than such a specific command as you describe, I had been
thinking about a more general alternative, which in my mind I have been
referring to by the code name "goto".  As in:

  (gdb) record goto end
  (gdb) record goto beginning
  (gdb) record goto instruction 12345
  (gdb) record goto bookmark 7

Easy enough to make this command ignore breakpoints watchpoints etc.



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