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 Hui Zhu
Sent: Monday, October 19, 2009 8:57 AM
To: Marc Khouzam
Cc: Michael Snyder; gdb@sourceware.org
Subject: Re: [FYI] tutorial for process record and reverse debugging


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.

What do you think?

Marc

Sorry Marc,  I cannot understand it.   Could you please tell me which
status need "disable all breakpoints and then re-enable them"?

In the tutorial, around the middle of section "Continue, reverse-continue, and breakpoints"
it mentions that after doing some reverse execution, we may be
"now ready to resume where we left off".


From what I understand this means that the user may decide that she
is done with reverse execution and wants to go back to executing
the live program.  To do this, we need to disable all bps, do a
'continue' and then (optionally) re-enable all bps.

If going straight to the end of the recording log is a valuable
feature, I was thinking it may deserve its own command.

Ultimately, I'm hoping that with such a command, we can then see
if we can have PRecord directly jump from recorded execution
to live execution without stopping.

I'm hoping to get opinions from you experts, as I'm not sure it is
a good idea.

OK, so good discussion. Let's cover some bases here.


1) I'm in record mode, and I want to stay in record mode.
No brainer -- that's the default behavior.

2) I'm in record mode, and I want to go to replay mode.
Currently the only way to do that is to give a "reverse"
command (reverse step, reverse continue...)

That's not too bad, but sometimes I might want to simply
go to the beginning of the log and start replaying forward
from the beginning (ie. not backwards from the end.
Or, I might even want to goto the middle before I start
to replay (in either direction).

We can do that now by using breakpoints, but we might have
to disable other breakpoints, if there are any.

But we COULD do it if we had a command like "goto beginning",
or "goto bookmark 12".

3) I'm in replay mode, possibly in the middle of the recording,
and I want to switch to record mode.  Now there are several
branching possibilities:  Do I want to:

  a) Go to the end and start appending to the existing log?
  b) Truncate the existing log at the point where I am, and
     start appending to the prefix?
  c) Discard the existing log and start a new log from the
     point where I am?
  d) Go back to the beginning, discard the existing log, and
     start a new log from the beginning?

These are all things that I think we can do at present, but
not generally with a single command.  Maybe we should kick
them around.  They're all useful, and not far out of reach.
They wouldn't, for instance, require that we keep several
branching logs around at the same time (although just think
what would be possible if we could do that!!! <g>)







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