Re: [RFC] reverse-step, reverse-next

Michael Snyder
2005-09-09T22:39:50Z

Stan Shebs wrote:
> Michael Snyder wrote:
>
>> This isn't for submission, just for discussion. This is something
>> that Johan Rydberg (of Virtutech) and I have been working on.
>>
>> I'd like to hear what everybody thinks about this
>> bit of infrun implementation for the reverse debugging
>> that we discussed a few months ago.
>>
> Seems plausible to me. I've actually been experimenting with
> a reverse execution prototype based on GDB managing all the
> checkpoints, rather than pushing them down into the target as
> Simics apparently does, and while GDB-managed checkpoints are
> more powerful in some ways (random access to arbitrary states,
> general undo), it's also looking rather more complicated.

Yeah, I consider this sort of abstract and modular.
My patch here makes no assumptions about how a backend
does reverse execution. The backend could, for instance,
call into a separate module such as yours that manages
checkpoints. Another backend might do it by direct request
to the target -- a la Simics.

>> This part is enough to get step and next to work in reverse,
>> based solely on the assumption that the backend (or someone)
>> provides an interface "get_exec_direction ()", which returns
>> forward or reverse. It's also assumed that the backend will
>> know which direction to go (leaving user-interface issues
>> out of the picture). One can imagine either a "set direction"
>> interface, or a "reverse-step/reverse-continue".
>
>
> Presumably there is a set_exec_direction,

Presumably. ;-)

> and both it and
> get_exec_direction are target vector entries?

For instance. But again, this infrun code makes no assumptions.
So that decision is orthogonal -- an implementation detail.

This code would be equally useful whether
(a) the direction was set by a modal "set direction" command,
or
(b) the direction was set by a "reverse-step" command.

> BTW, I have a little discussion of usage models for reverse
> execution that I'm planning to post on Monday.

Looking forward to it.

I, in turn, have a patch to implement "reverse-finish",
which I thought I'd post a little while after this one.