Mirror of the gdb mailing list
 help / color / mirror / Atom feed
From: Greg Law <glaw@undo-software.com>
To: Jakob Engblom <jakob@virtutech.com>
Cc: 'Michael Snyder' <msnyder@vmware.com>,
	gdb@sourceware.org,   'Julian Smith' <jsmith@undo-software.com>
Subject: Re: Simics & reverse execution
Date: Fri, 04 Sep 2009 12:44:00 -0000	[thread overview]
Message-ID: <4AA10B93.4000905@undo-software.com> (raw)
In-Reply-To: <019501ca2ccb$0bc1bd70$23453850$@com>

Jakob Engblom wrote:
>> currently are (to allow e.g. a graphical frontend to implement a
>> slide-bar to show where in the record log we are).  The former is
>> precise to instruction count (and signals, etc); the latter may not be
>> depending on the details of the target.  Actually, percentage is the
>> wrong term -- better would be what fraction of the way are we through
>> history, e.g. in 1/(2^64) increments, such that half way through
>> recorded history would be represented as 2^63.
> 
> I can see one big problem with this: you are assuming a bounded recording. 

No.  Or at least, not consciously :)

In the notion above, we're talking about 1/(2^64) of however much log 
happens to have been recorded.  So yes, if you did a binary chop, then 
ran a bit in record mode to "grow" the log, and then did another binary 
chop, how much time 1/(2^64) of the log represents would change.  But 
that's what bookmarks are for -- these would give you a consistent 
marker to allow you to jump back and forth as the log grows (or even 
shrinks).

But I'm not wedded in any way to the above scheme.  Having some way to 
convert from an 8-byte 'precise' bookmark to an 8-byte 'imprecise' 
scalar representation would also be fine.  In the case of Simics it 
sounds like such an operation would be a no-op (both bookmarks and 
scalar values would be 8-byte picoseconds).

> 
> In our case, it is unbounded (except for the current 64 bit counter of
> picoseconds used to coordinate all processors and other time-dependent parts in
> a simulation system, which bounds execution at an annoying 280 days of time).

UndoDB is essentially the same (except our limits take us to about 30 
years :)

> In Simics, you can always just continue past the end of the previously seen
> execution, and you extend the size of the reversible window.  I believe VMWare
> does the same from my experiemtns with Workstation 6.5. 

Right, same for us.

> 
> I honestly think binary chop is best put into the backend for this reason... the
> times I have seen it applied it relied on large state-checking scripts running
> that had far better insight into the target system than you get with gdb (such
> as doing global consistency checks on the state of file systems on various
> boards in a fault-tolerant redundant cluster). 

Oh, I agree that binary chop intelligence in the back end could be a 
good thing.  It would be really nice one day to be able to have gdb say 
to the back end "find me the most recent time this arbitrary condition 
held".  However, that's quite complicated, and it seems reasonable to 
assume is a little way into the future.  More importantly, even when gdb 
supports it, it's likely that not _all_ back-ends would.  And more 
relevant still, whatever binary chop interface were defined, it seems 
that in addition it would be useful to export to the user the ability to 
jump to an arbitrary point in time, without necessarily having a 
bookmark there.  Talking purely in terms of binary chop is too limited. 
  Example - say the user wants to go back to the beginning of time, but 
didn't think to take a bookmark when they were there.  Executing 
backwards might take a long time.  For systems like Simics, UndoDB and 
VMware that use a snapshot-and-replay technique it can be almost instant 
to jump back to time 0.  We could always add a special command to goto 
time 0 or a special bookmark, but why not generalise it?  e.g. maybe the 
user wants to skip forwards a few seconds' worth, but again, doesn't 
have a bookmark conveniently placed.

It seems that for at least some targets this would be pretty 
straightforward to implement and a very useful feature for users.


Cheers,

Greg
-- 
Greg Law, Undo Software                       http://undo-software.com/


  reply	other threads:[~2009-09-04 12:44 UTC|newest]

Thread overview: 48+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-08-17  7:42 gdb reverse execution: how to actually run tests for it? Jakob Engblom
2009-08-17  7:58 ` Hui Zhu
2009-08-17 11:33   ` Jakob Engblom
2009-08-17 11:50   ` Jakob Engblom
2009-08-17 11:55     ` Pedro Alves
2009-08-17 15:31       ` Pedro Alves
2009-08-17 15:52         ` Hui Zhu
2009-08-20 17:10           ` Pedro Alves
2009-08-19  7:34         ` Jakob Engblom
2009-08-17 18:24       ` Michael Snyder
2009-08-17 20:08         ` Jakob Engblom
2009-08-17 22:44           ` Michael Snyder
2009-08-19  7:24             ` Jakob Engblom
2009-08-19  8:58             ` Simics & reverse execution Jakob Engblom
2009-08-19 12:29               ` Hui Zhu
2009-08-19 20:03                 ` Jakob Engblom
2009-08-19 20:29                   ` Michael Snyder
2009-08-19 20:44                     ` Daniel Jacobowitz
2009-08-19 21:09                     ` Pedro Alves
2009-08-20  6:54                       ` Jakob Engblom
2009-08-20 15:03                         ` Pedro Alves
2009-08-27  4:44               ` Michael Snyder
2009-08-27  8:17                 ` Jakob Engblom
2009-08-28 11:04                   ` Michael Snyder
2009-08-28 15:17                 ` Greg Law
2009-08-31 13:22                   ` Jakob Engblom
2009-08-31 16:34                     ` Greg Law
2009-09-01  6:37                       ` Jakob Engblom
2009-09-01 13:49                         ` Greg Law
2009-09-03 19:16                           ` Jakob Engblom
2009-09-04 12:44                             ` Greg Law [this message]
2009-09-07  7:16                               ` Jakob Engblom
2009-09-07  8:13                                 ` Greg Law
2009-09-07  8:24                                   ` Jakob Engblom
2009-09-07 12:06                                     ` Greg Law
2009-09-08  7:21                                       ` Jakob Engblom
2009-09-08 12:08                                         ` Greg Law
2009-09-08 13:02                                           ` Jakob Engblom
2009-09-08 19:11                                             ` Greg Law
2009-09-14  8:26                                               ` Jakob Engblom
2009-09-17  3:07                                                 ` Michael Snyder
2009-08-19  7:24       ` gdb reverse execution: how to actually run tests for it? Jakob Engblom
2009-08-19 15:28         ` Pedro Alves
2009-08-19 16:37           ` Tom Tromey
2009-08-20 13:10             ` Jakob Engblom
2009-08-20 14:50               ` Daniel Jacobowitz
2009-08-20 20:27               ` Michael Snyder
2009-08-20  6:53           ` Hui Zhu

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=4AA10B93.4000905@undo-software.com \
    --to=glaw@undo-software.com \
    --cc=gdb@sourceware.org \
    --cc=jakob@virtutech.com \
    --cc=jsmith@undo-software.com \
    --cc=msnyder@vmware.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