Mirror of the gdb mailing list
 help / color / mirror / Atom feed
* vmware's replay framework and gdb
@ 2008-11-05 19:05 Edward Peschko
  2008-11-06  1:02 ` reverse trace [was: vmware's replay framework and gdb] EBo
  2008-11-06  1:21 ` vmware's replay framework and gdb Michael Snyder
  0 siblings, 2 replies; 9+ messages in thread
From: Edward Peschko @ 2008-11-05 19:05 UTC (permalink / raw)
  To: gdb

hey..

I watched the following Google tech talk with much interest:

http://www.youtube.com/watch?v=RvMlihjqlhY

It describes a very generic, scalable, environment-agnostic way of
recording programs' execution via vmware's virtualization, and doing
reverse tracing (which is one of the reasons I'd like to record
programs in the first place). I heard gdb mentioned in the video in
passing, so I'm assuming someone in the list is familiar with vmware's
effort, but how far along is gdb in supporting this framework?

Thanks much,

Ed


^ permalink raw reply	[flat|nested] 9+ messages in thread

* reverse trace [was: vmware's replay framework and gdb]
  2008-11-05 19:05 vmware's replay framework and gdb Edward Peschko
@ 2008-11-06  1:02 ` EBo
  2008-11-06  4:45   ` Thiago Jung Bauermann
  2008-11-06 10:22   ` Jakob Engblom
  2008-11-06  1:21 ` vmware's replay framework and gdb Michael Snyder
  1 sibling, 2 replies; 9+ messages in thread
From: EBo @ 2008-11-06  1:02 UTC (permalink / raw)
  To: Edward Peschko, gdb

I Cannot comment on VMWares effort, but reading this I had an idea and thought
I would share...

The overall problem with reverse tracing as I see it is one of caching the old
values basically as they change.  One way to get at this is to integrate a SQL
database with transaction support into the trace subsystem.  The you can view
the entire history back and forth.  

So, if you are willing to do a little brainstorming along these lines the
following questions arise:

*) is there some easy way to get the symbol table and integrate that info back
into gdb and associate the variables/memory blocks with each line of code?

*) is there some computationally inexpensive way to trap memory changes and
associate the timing with source lines and execution times?

Once all this information is funneled through a relational database, you can
then either grab the current state of each variable or reconstruct it on the fly.

Just an idea, and I hope this kind of speculative response is considered
acceptable to the group.

  EBo --

Edward Peschko <horos11@gmail.com> said:

> hey..
> 
> I watched the following Google tech talk with much interest:
> 
> http://www.youtube.com/watch?v=RvMlihjqlhY
> 
> It describes a very generic, scalable, environment-agnostic way of
> recording programs' execution via vmware's virtualization, and doing
> reverse tracing (which is one of the reasons I'd like to record
> programs in the first place). I heard gdb mentioned in the video in
> passing, so I'm assuming someone in the list is familiar with vmware's
> effort, but how far along is gdb in supporting this framework?
> 
> Thanks much,
> 
> Ed
> 



-- 




^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: vmware's replay framework and gdb
  2008-11-05 19:05 vmware's replay framework and gdb Edward Peschko
  2008-11-06  1:02 ` reverse trace [was: vmware's replay framework and gdb] EBo
@ 2008-11-06  1:21 ` Michael Snyder
  2008-11-06 10:25   ` Jakob Engblom
  1 sibling, 1 reply; 9+ messages in thread
From: Michael Snyder @ 2008-11-06  1:21 UTC (permalink / raw)
  To: Edward Peschko; +Cc: gdb

Edward Peschko wrote:
 > hey..
 >
 > I watched the following Google tech talk with much interest:
 >
 > http://www.youtube.com/watch?v=RvMlihjqlhY
 >
 > It describes a very generic, scalable, environment-agnostic way of
 > recording programs' execution via vmware's virtualization, and doing
 > reverse tracing (which is one of the reasons I'd like to record
 > programs in the first place). I heard gdb mentioned in the video in
 > passing, so I'm assuming someone in the list is familiar with vmware's
 > effort,

Me -- I'm a member of the replay debugging team at VMware,
and a public gdb maintainer, and I was at that tech talk.

 > but how far along is gdb in supporting this framework?

I'm working on it.   ;-)

If you look at the recent threads on this list about reverse
debugging in gdb, you'll get an idea of where we're headed.
We want to let a user debug a recorded execution, deterministic-
ally, and make it run both forward and backward using the same
reverse debugging commands as described in those threads
(reverse-continue, reverse-step, reverse-next etc.)

We don't have any product release date for it, but you can
already do some rudimentary replay debugging with the
released version of VMware Worksatation and the standard gdb.
Here's a blog article about it:

http://stackframe.blogspot.com/




^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: reverse trace [was: vmware's replay framework and gdb]
  2008-11-06  1:02 ` reverse trace [was: vmware's replay framework and gdb] EBo
@ 2008-11-06  4:45   ` Thiago Jung Bauermann
  2008-11-06  5:10     ` EBo
  2008-11-06 10:22   ` Jakob Engblom
  1 sibling, 1 reply; 9+ messages in thread
From: Thiago Jung Bauermann @ 2008-11-06  4:45 UTC (permalink / raw)
  To: ebo; +Cc: Edward Peschko, gdb

El mié, 05-11-2008 a las 18:01 -0700, EBo escribió:
> The overall problem with reverse tracing as I see it is one of caching the old
> values basically as they change.  One way to get at this is to integrate a SQL
> database with transaction support into the trace subsystem.  The you can view
> the entire history back and forth.  
<snip>
> Once all this information is funneled through a relational database, you can
> then either grab the current state of each variable or reconstruct it on the fly.
> 
> Just an idea, and I hope this kind of speculative response is considered
> acceptable to the group.

Since we're just brainstorming:

Have you seen Chronicle and Chronomancer? I didn't try them, but from
what I read they seem to go in the direction that you suggest here:

http://code.google.com/p/chronicle-recorder/
http://code.google.com/p/chronomancer/
http://weblogs.mozillazine.org/roc/archives/2007/08/announcing_chro.html
-- 
[]'s
Thiago Jung Bauermann
IBM Linux Technology Center


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: reverse trace [was: vmware's replay framework and gdb]
  2008-11-06  4:45   ` Thiago Jung Bauermann
@ 2008-11-06  5:10     ` EBo
  0 siblings, 0 replies; 9+ messages in thread
From: EBo @ 2008-11-06  5:10 UTC (permalink / raw)
  To: Thiago Jung Bauermann, ebo; +Cc: Edward Peschko, gdb

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain, Size: 1421 bytes --]

Thanks Thiago,

That is so wicked cool!  If this project was really ongoing I would be
interested, but as it is it looks orphaned...  Who's to know though.

Basically what I was thinking would be behind the scenes with gdb:

  * turn reversable tracing on
  * step forward
  * step back

..

  EBo --


Thiago Jung Bauermann <bauerman@br.ibm.com> said:

> El mié, 05-11-2008 a las 18:01 -0700, EBo escribió:
> > The overall problem with reverse tracing as I see it is one of caching the old
> > values basically as they change.  One way to get at this is to integrate a SQL
> > database with transaction support into the trace subsystem.  The you can view
> > the entire history back and forth.  
> <snip>
> > Once all this information is funneled through a relational database, you can
> > then either grab the current state of each variable or reconstruct it on
the fly.
> > 
> > Just an idea, and I hope this kind of speculative response is considered
> > acceptable to the group.
> 
> Since we're just brainstorming:
> 
> Have you seen Chronicle and Chronomancer? I didn't try them, but from
> what I read they seem to go in the direction that you suggest here:
> 
> http://code.google.com/p/chronicle-recorder/
> http://code.google.com/p/chronomancer/
> http://weblogs.mozillazine.org/roc/archives/2007/08/announcing_chro.html
> -- 
> []'s
> Thiago Jung Bauermann
> IBM Linux Technology Center
> 
> 



-- 




^ permalink raw reply	[flat|nested] 9+ messages in thread

* RE: reverse trace [was: vmware's replay framework and gdb]
  2008-11-06  1:02 ` reverse trace [was: vmware's replay framework and gdb] EBo
  2008-11-06  4:45   ` Thiago Jung Bauermann
@ 2008-11-06 10:22   ` Jakob Engblom
  2008-11-06 17:01     ` EBo
  1 sibling, 1 reply; 9+ messages in thread
From: Jakob Engblom @ 2008-11-06 10:22 UTC (permalink / raw)
  To: ebo, 'Edward Peschko', gdb

> I Cannot comment on VMWares effort, but reading this I had an idea and thought
> I would share...
> 
> The overall problem with reverse tracing as I see it is one of caching the old
> values basically as they change.  One way to get at this is to integrate a SQL
> database with transaction support into the trace subsystem.  The you can view
> the entire history back and forth.

Well, the amonut of data we are talking about is very very large.  Recording a
complete execution trace very quickly eats up memory.  

If you look at what Lauterbach and GreenHills have in their hardware-based
reverse debuggers, it is essentialy that: a recording of execution step by step.
Using some very clever compression techniques, they can put a few hundred
million clock cycles of instructions into a gigabyte-level memory in their trace
boxes.  You need to consider a data need for well over 32 bits per instruction.

Even quite trivial workloads quickly build up tens of gigabytes of data if you
trace all, and that means that you are basically doing something that is more
expensive than high-def video in terms of data rates.

Pushing that into a database is not really feasible for any real world scenario
involving multiple gigahertz-level processors crunching real code and not
idling. 

That's why the solutions to reversing from VmWare and Virtutech both hinge on
deterministic replay rather than complete recording -- it is far cheaper to go
back and reconstruct the state at some point in time than trying to store it. 

If you also include fnu things like memory state, I/O system state changes,
graphics memory, etc. it is clear why this is the only sensible thing to do.
 
> So, if you are willing to do a little brainstorming along these lines the
> following questions arise:
> 
> *) is there some easy way to get the symbol table and integrate that info back
> into gdb and associate the variables/memory blocks with each line of code?
> 
> *) is there some computationally inexpensive way to trap memory changes and
> associate the timing with source lines and execution times?
> 
> Once all this information is funneled through a relational database, you can
> then either grab the current state of each variable or reconstruct it on the
fly.
> 
> Just an idea, and I hope this kind of speculative response is considered
> acceptable to the group.

Have been thinking along he same lines, but the volume really is a killer here.


/jakob
 



^ permalink raw reply	[flat|nested] 9+ messages in thread

* RE: vmware's replay framework and gdb
  2008-11-06  1:21 ` vmware's replay framework and gdb Michael Snyder
@ 2008-11-06 10:25   ` Jakob Engblom
  0 siblings, 0 replies; 9+ messages in thread
From: Jakob Engblom @ 2008-11-06 10:25 UTC (permalink / raw)
  To: 'Michael Snyder', 'Edward Peschko'; +Cc: gdb

>  > but how far along is gdb in supporting this framework?
> 
> I'm working on it.   ;-)
> 
> If you look at the recent threads on this list about reverse
> debugging in gdb, you'll get an idea of where we're headed.
> We want to let a user debug a recorded execution, deterministic-
> ally, and make it run both forward and backward using the same
> reverse debugging commands as described in those threads
> (reverse-continue, reverse-step, reverse-next etc.)
> 
> We don't have any product release date for it, but you can
> already do some rudimentary replay debugging with the
> released version of VMware Worksatation and the standard gdb.
> Here's a blog article about it:
> 
> http://stackframe.blogspot.com/

Not to be outdone: Simics, at www.virtutech.com, also has support for reverse
debug with gdb, using our own patched version of gdb 6.8.  This has been in use
since 2005. 

Simics is free for academia, if you are an academic, and we are also quite happy
to provide access to Simics licenses to the gdb maintainers. We are looking into
how to integrate the upcoming reversible gdb with our backend, looks fairly
similar. 


Best regards,

/jakob

_______________________________________________________

Jakob Engblom, PhD, Technical Marketing Manager

Virtutech                   Direct: +46 8 690 07 47    
Drottningholmsvägen 14      Mobile: +46 709 242 646   
11243 Stockholm             Web:    www.virtutech.com  
Sweden
________________________________________________________
 




^ permalink raw reply	[flat|nested] 9+ messages in thread

* RE: reverse trace [was: vmware's replay framework and gdb]
  2008-11-06 10:22   ` Jakob Engblom
@ 2008-11-06 17:01     ` EBo
  2008-11-06 17:09       ` Jakob Engblom
  0 siblings, 1 reply; 9+ messages in thread
From: EBo @ 2008-11-06 17:01 UTC (permalink / raw)
  To: Jakob Engblom, ebo, 'Edward Peschko', gdb

One of the reasons I was thinking of relational databases was that they can
deal with the volume and put whatever the decide to cache into dis instead of
memory (but maybe you were thinking disk space when you said memory anyway).  

Besides compression of data stream there is also the possibility of only
caching at certain sync points and tracing between sync points you have to
regenerate the temp variables, etc.  Like I said, I was just brain storming
here.  I had no idea how far things had gotten along the lines of
Chronomancer/Chronicle.

Regardless of how it eventually ends up working, it is going to either use a
LOT of space, or a lot of CPU power to recreate.  

Cheers,

  EBo --

Jakob Engblom <jakob@virtutech.com> said:

> Well, the amonut of data we are talking about is very very large.  Recording a
> complete execution trace very quickly eats up memory.  
>
> If you look at what Lauterbach and GreenHills have in their hardware-based
> reverse debuggers, it is essentialy that: a recording of execution step by step.
> Using some very clever compression techniques, they can put a few hundred
> million clock cycles of instructions into a gigabyte-level memory in their trace
> boxes.  You need to consider a data need for well over 32 bits per instruction.
> 
> Even quite trivial workloads quickly build up tens of gigabytes of data if you
> trace all, and that means that you are basically doing something that is more
> expensive than high-def video in terms of data rates.
> 
> Pushing that into a database is not really feasible for any real world scenario
> involving multiple gigahertz-level processors crunching real code and not
> idling. 
> 
> That's why the solutions to reversing from VmWare and Virtutech both hinge on
> deterministic replay rather than complete recording -- it is far cheaper to go
> back and reconstruct the state at some point in time than trying to store it. 
> 
> If you also include fnu things like memory state, I/O system state changes,
> graphics memory, etc. it is clear why this is the only sensible thing to do.
>  
> > So, if you are willing to do a little brainstorming along these lines the
> > following questions arise:
> > 
> > *) is there some easy way to get the symbol table and integrate that info back
> > into gdb and associate the variables/memory blocks with each line of code?
> > 
> > *) is there some computationally inexpensive way to trap memory changes and
> > associate the timing with source lines and execution times?
> > 
> > Once all this information is funneled through a relational database, you can
> > then either grab the current state of each variable or reconstruct it on the
> fly.
> > 
> > Just an idea, and I hope this kind of speculative response is considered
> > acceptable to the group.
> 
> Have been thinking along he same lines, but the volume really is a killer here.
> 
> 
> /jakob
>  
> 
> 
> 



-- 




^ permalink raw reply	[flat|nested] 9+ messages in thread

* RE: reverse trace [was: vmware's replay framework and gdb]
  2008-11-06 17:01     ` EBo
@ 2008-11-06 17:09       ` Jakob Engblom
  0 siblings, 0 replies; 9+ messages in thread
From: Jakob Engblom @ 2008-11-06 17:09 UTC (permalink / raw)
  To: ebo, 'Edward Peschko', gdb

> One of the reasons I was thinking of relational databases was that they can
> deal with the volume and put whatever the decide to cache into dis instead of
> memory (but maybe you were thinking disk space when you said memory anyway).

RAM, disk, does not matter -- size is enormous either case. 
 
> Besides compression of data stream there is also the possibility of only
> caching at certain sync points and tracing between sync points you have to
> regenerate the temp variables, etc.  Like I said, I was just brain storming
> here.  I had no idea how far things had gotten along the lines of
> Chronomancer/Chronicle.
> 
> Regardless of how it eventually ends up working, it is going to either use a
> LOT of space, or a lot of CPU power to recreate.

The CPU power is actually easier to handle, especially if you have a few
snapshots to return to along the way.  We have looked at this hard, and the
execution to recreate is much easier to make scalable than the complete trace
approach.

/jakob


^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2008-11-06 17:09 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-11-05 19:05 vmware's replay framework and gdb Edward Peschko
2008-11-06  1:02 ` reverse trace [was: vmware's replay framework and gdb] EBo
2008-11-06  4:45   ` Thiago Jung Bauermann
2008-11-06  5:10     ` EBo
2008-11-06 10:22   ` Jakob Engblom
2008-11-06 17:01     ` EBo
2008-11-06 17:09       ` Jakob Engblom
2008-11-06  1:21 ` vmware's replay framework and gdb Michael Snyder
2008-11-06 10:25   ` Jakob Engblom

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox