[RFA] Reverse debugging, part 1/3: target interface
Michael Snyder
msnyder@redhat.com
Thu Apr 20 19:22:00 GMT 2006
Daniel Jacobowitz wrote:
> On Wed, Apr 19, 2006 at 11:26:11AM -0700, Michael Snyder wrote:
>
>>+@item bc
>>+@cindex @samp{bc} packet
>>+Continue execution in reverse (if capable).
>>+@xref{Reverse Execution, ,Running programs backward}.
>>+
>>+Reply:
>>+@xref{Stop Reply Packets}, for the reply specifications.
>>+
>>+@item bs
>>+@cindex @samp{bs} packet
>>+Single step in reverse (if capable).
>>+@xref{Reverse Execution, ,Running programs backward}.
>>+
>>+Reply:
>>+@xref{Stop Reply Packets}, for the reply specifications.
>>+
>
>
> You designed the target interface so that it could return EXEC_ERROR,
> "I don't support reverse execution". But here you've got only bc and
> bs; you've got no way to probe the remote target for reverse execution
> support.
Yes, I think I remarked on the need for that in comments.
> I realize you've got at least one already shipping stub for this; can
> we still fix it, or should we assume that there will be at least one
> target where the only way to find out is to try?
No problem -- it's not actually shipping, or even promised.
This has been a rare, redhat-funded pure research project. ;-)
Yes, I appreciate how lucky I am. Thank you, oh employer mine.
[not that we don't hope to make money from it eventually...]
> This seems to be one of the stray FIXMEs in this code which really
> ought to be fixed before we merge it:
>
> + /* FIXME: check target for capability. */
>
> I'm guessing you haven't tried this with a remote target that didn't
> support it. It looks like it would fail messily.
Hmmmmm... ok, your guess is correct.
I propose a deal -- I'll try it, and if it does fail messily,
I will fix it. If it doesn't, will you let me check it in
with the expectation of future enhancement? I feel that for
a major new functionality, useability rather than completeness
should be the mark.
It's not like we're not going to add to what's been
implemented so far.
> Are there other hard cases that should be discussed in the remote
> protocol documentation, or handled by the protocol? The first one that
> comes to mind is "what do we do with threads" - is it ever going to be
> relevant to do this in a multi-threaded system, and if so, are we going
> to reverse all threads at once?
I think in previous discussion, we have recognized that this is a
hard problem, and I have simply deferred addressing it. I don't
even claim to know if it *can* be addressed. I'd like to say,
we can now use this feature on the non-trivial subset of non-
threaded programs, and put threaded programs down as a hoped-
for future enhancement.
> Oh, and refering to Stop Reply Packets is not complete for the reply;
> that doesn't cover error codes. For instance, you have one error code
> designated to mean "no more history". That should be in the
> documentation, please.
Well, yes, I thought about that -- but in fact, AFAICT there is
*no* documentation for error codes, and I didn't feel like starting
it. Yes, I think we need some, but it's probably worth having a
discussion of how we would like to do it.
And, self-interest not withstanding, I don't think there's a good
reason for holding up this patch for lack of something that is
lacking throughout.
> I've only skimmed the patch; are there others?
None that I'm deliberately withholding. ;-)
I'm counting on you reviewers to help find any that I've overlooked.
Thanks for your review and feedback.
More information about the Gdb-patches
mailing list