Re: [FYI] tutorial for process record and reverse debugging

Michael Snyder
2009-10-19T18:23:08Z

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