Linked by Thom Holwerda on Tue 16th May 2006 21:55 UTC, submitted by Julian Smith
General Development "Undo Software today unveiled UndoDB - the first bidirectional debugger for compiled programs. A bidirectional debugger allows programmers to run a program backwards in time as well as forwards. The program can be stepped back line-by-line, or rewound to any point in its history. Furthermore, programmers can play the program forwards and backwards in a totally repeatable fashion, allowing them to 'home in' on the cause of a bug."
Order by: Score:
Pretty awesome idea.
by mattst88 on Tue 16th May 2006 22:33 UTC
mattst88
Member since:
2005-08-27

I've never thought of doing something like this, but I think it's a great idea. I'll definitely have to try this out the next time I write a piece of (bad) code. Good stuff.

Reply Score: 1

campaign for real time?
by Cloudy on Tue 16th May 2006 22:38 UTC
Cloudy
Member since:
2006-02-15

Huh. "first"? Guess they didn't realize that CDC made the Cyber series of computers with "come-from" registers that could be used for traceback, or that entire operating systems were built around the idea of replayability in the 70s.

Of course, 'deterministic' and 'multithreaded' are antitheses.

But still, replay is nice if you've got it.

Reply Score: 3

RE: campaign for real time?
by cgdae on Wed 17th May 2006 13:53 UTC in reply to "campaign for real time?"
cgdae Member since:
2006-05-17

Hi. I'm one of the developers of UndoDB.

We are actually going to support threaded debugees in version 2 - it is possible to make a multithreaded programme run in a deterministic way. It's a rather tricky thing to get right, but we have the general approach figured out and simple multi-threaded tests are passing in our development tree.

Reply Score: 2

RE[2]: campaign for real time?
by Cloudy on Wed 17th May 2006 18:34 UTC in reply to "RE: campaign for real time?"
Cloudy Member since:
2006-02-15

It is possible to make a multithreaded programme run in a deterministic way.

Yes, and a number of debugers have gone that route in the past. It's a good route for a wide range of debugging, but it merely masks heisenbugs, rather than helping you find them.

Reply Score: 1

RE[3]: campaign for real time?
by cgdae on Wed 17th May 2006 22:03 UTC in reply to "RE[2]: campaign for real time?"
cgdae Member since:
2006-05-17

>>It is possible to make a multithreaded programme run
>>in a deterministic way.

>It's a good route for a wide range of debugging, but
>it merely masks heisenbugs, rather than helping you
>find them.

This is not necessarily the case. Making a multithreaded programme run in a deterministic way does not preclude triggering the really tricky bugs. For example, one could still have thread switches occuring at random points in a programme's execution, such in-between reading two adjacent bytes of memory. The important requirement for a bidirectional debugger is that when it replays the programme, the thread switches occur in exactly the same place that they did when the programme's execution was initially recorded. That's what I meant by `deterministic'.

I.e. you still get to trigger the heisenbug, but you can then replay it exactly, as many times as you like.

Reply Score: 1

RE[4]: campaign for real time?
by Cloudy on Thu 18th May 2006 04:56 UTC in reply to "RE[3]: campaign for real time?"
Cloudy Member since:
2006-02-15

ah, you don't mean deterministic, you mean replayable. got it.

Having triggered the heisenbug, you can repeat it. However, making a small change to a program and then rerunning it may not re-trigger the heisenbug, so you can't use the debugger to determine if the behavior is still reproducable. That would be deterministic.

Of course, the failure to reproduce a certain class of bugs does not make a debugger useless, it's just a limitation you have to be aware of.

Reply Score: 1

not new
by nickburlett on Tue 16th May 2006 23:47 UTC
nickburlett
Member since:
2006-05-16

Green Hills Software (http://www.ghs.com) has had this functionality for quite some time in the TimeMachine debugger (http://www.ghs.com/products/timemachine.html)

Reply Score: 1

GPL?
by Platypus on Wed 17th May 2006 00:23 UTC
Platypus
Member since:
2006-03-26

If it's based on gdb, which is GPL, don't they have to release source? I didn't see any obvious mention of such on their website.

Reply Score: 1

RE: GPL?
by GatoLoko on Wed 17th May 2006 00:36 UTC in reply to "GPL?"
GatoLoko Member since:
2005-11-13

Here you can see what you are looking for: http://undo-software.com/undodb_requestnoncommercial.html

Reply Score: 1

Reminds me
by shredder on Wed 17th May 2006 13:06 UTC
shredder
Member since:
2005-07-06

...of this article which gave me the impression that this sort of things wasn't generally possible with mainstream hardware:

http://www.kuro5hin.org/story/2003/9/8/14125/70302

Reply Score: 1

RE[2]: GPL?
by massa on Wed 17th May 2006 13:07 UTC
massa
Member since:
2005-08-22

The link you want is
http://undo-software.com/undodb_buy.html#GPL issues

(for the lazy ones, I'll say that they claim to use smoe patches to gdb [which they make available] + another binary, not linked to gdb to do the grunt work)

Reply Score: 1

You dont even need a DeLorean
by Soulbender on Thu 18th May 2006 03:23 UTC
Soulbender
Member since:
2005-08-18

because home computers can now easily transport you backwards in time by using something called a "debugger".

Reply Score: 1