From: Michael Snyder <msnyder@redhat.com>
To: gdb@sources.redhat.com
Subject: [discuss] going back: reverse-execution vs. checkpoint/restart
Date: Mon, 23 May 2005 18:51:00 -0000 [thread overview]
Message-ID: <42922617.3050805@redhat.com> (raw)
Last week I was beginning to lean in the direction of
Paul's and Frank's viewpoint. On reflection, I think
I can argue that the two are not mutually exclusive.
As Frank points out, the "rs/bs" and "rc/bc" primatives
are useful only for a really clever target -- one that
not only has a means of backing up to a previous state,
but can do it at single-instruction granularity, fast
and efficiently, and has worked out a lot of the 'kinks'
that a lot of us haven't even thought about yet. And
as Paul points out, there is currently only one such
target that we know of.
The bookmark (or checkpoint/restart) model is a considerably
smaller and less daunting "chunk" for the target-side
implementer to take on at one go -- and is not necessarily
limited to simulators. If gdb implemented an interface for
checkpoint/restart, there's a good chance that a number of
targets would soon take advantage of it.
And it's quite reasonable to suppose that there is an
evolutionary path from checkpoint/restart to reverse
execution. We've already discussed some of the ways
in which it could go, so I think it's virtually a given
that it is possible to get from A to B. For that matter,
it should be also possible to get from B to A: a target
that only supports the rs/bs primatives should be able
to implement checkpoint/restart in terms of them.
How much of that evolution needs to take place on the
gdb side, and how much on the target side, is a great
field for discussion -- I would only note that we do
not have to answer that question now. If we convince
ourselves that both sets of primatives are useful for
some targets, and that one may evolve into the other,
then there is no reason not to implement them both.
Being able to do either one but not the other would
be better than not being able to do either.
Certainly users have been asking for checkpoint/restart
for years, if not decades. It would be very cool if
we could give it to them, with an interface that lends
itself to porting to various target environments.
And certainly the idea of reverse execution has been
around for years too, and it would be cool to be able
to support that.
So why settle for one or the other? The beauty of
gdb is that it doesn't need to know HOW the target
accomplishes a thing. Details such as whether the
cached states are kept in a circular buffer are
for the target implementers to worry about. We just
define our interface specification to be as general
as possible. The less we assume about the target-side
implementation, the better.
That said -- it's still useful and fun to discuss how
these things may be accomplished, and should help us
to design a generally useful interface.
next reply other threads:[~2005-05-23 18:51 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-05-23 18:51 Michael Snyder [this message]
2005-05-23 19:01 ` Daniel Jacobowitz
2005-05-23 19:15 ` Michael Snyder
2005-05-23 19:32 ` Dan Shearer
2005-05-23 19:37 ` Dan Shearer
2005-05-24 4:47 Paul Schlie
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=42922617.3050805@redhat.com \
--to=msnyder@redhat.com \
--cc=gdb@sources.redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox