LWN.net Logo

UndoDB gets smarter

From:  Greg Law <glaw-AT-undo-software.com>
To:  pr-AT-lwn.net
Subject:  UndoDB, the smart debugger for Linux gets smarter
Date:  Wed, 14 Mar 2007 20:18:05 +0000

Hi LWN-dudes!  Think many of your readers will be interested in this:


UndoDB, the smart debugger for Linux gets smarter
- Reversible debugger for Linux gets support for threads and signals

FOR IMMEDIATE RELEASE

Cambridge, UK - March 12, 2007.

Jacob Rideout is a developer on the prestigious KDE project. After 
struggling for over a week with a particularly nasty bug, he turned to 
UndoDB: the reversible debugger for Linux applications. He says of the 
experience:

     "I found the idea of [the] product amazing and a boon to my 
productivity ... I already have been able to fix a deadlock that was 
driving me crazy for a week in only 10 minutes".

UndoDB is different to most other debuggers because it is able to step a 
program back in time, showing the programmer exactly what their program 
has done, and so making even the most difficult bug trivial to uncover.

Bugs are the bane of software developers' lives, and those of their 
managers. Yet until recently, the tools that are used to resolve them 
had hardly evolved in decades. Greg Law, co-founder and CEO of Undo 
Software (http://undo-software.com/) found the general lack of interest 
in debugging in the computer science community perplexing:

     Bugs are by far software's single biggest issue. It's always been 
so, and it's been getting steadily worse as software has become ever 
more complicated. Debugging may not be glamorous, but it totally 
dominates software development costs, schedule delays, and product 
quality. Even now a very small proportion of computer scientists are 
directly working on this problem. But things are beginning to change — 
Undo Software is one of a small but growing number of players in the 
industry who are giving this huge problem the attention it deserves.

The US government estimate that bugs cost $60bn per year to the US 
economy alone [1]. This huge sum is partly due to productivity (the same 
report estimates programmers spend 80% of their time debugging), and 
also due to the cost of in-the-field bugs.

Law goes on to say

     We have been truly delighted with the feedback and very positive 
response we received with the release of version 1 of UndoDB last year 
and we look forward to helping many more in the Linux community with the 
release of UndoDB v2 which is able to operate on programs that use 
threads and asynchronous signals.

Traditional debuggers have been in widespread use for decades, allowing 
the developer to stop his program and peer inside. The program can then 
be started again, and may be inched forwards an instruction or more at a 
time. These tools have their uses, but they are unable to tell the 
programmer what their program has done previously. A new breed of 
debugger, reversible debuggers, allow the programmer to pause a running 
program and inspect its state not just at that moment, but at any point 
in the past. The program can be stepped back a single instruction, or a 
larger amount of time, giving the developer much more information to 
help diagnose the cause of the bug.

A reversible debugger effectively records everything that the debuggee 
program does, down to the finest detail: every memory access, every 
computation, every call to the operating system and every input it 
receives. This colossal amount of data is then presented to the 
programmer using a very powerful metaphor: the ability to travel 
backwards in time (and forwards again) and inspect the program state. 
UndoDB does not need to store this huge amount of data though: its 
snapshot and replay technique allows it to store only non-deterministic 
inputs, making the space required for the log much smaller than would 
otherwise be the case.

Reversible debugging is so useful because it gives the user control over 
time. To debug a program is to reason backwards from the point of 
failure to determine the cause of that failure. On the first page of 
their book, The Practice of Programming, Brian Kernighan and Rob Pike 
(two of the pioneers of modern computer programming) give the following 
advice to programmers when debugging:

     Reason back from the state of the crashed program to determine what 
could have caused this. Debugging involves backwards reasoning, like 
solving murder mysteries. Something impossible occurred, and the only 
solid information is that it really did occur. So we must think 
backwards from the result to discover the reasons.

With this analogy, a programmer using a reversible debugger is like the 
detective finding detailed CCTV footage of a murder and everything 
leading up to it.

UndoDB uniquely enables reversible debugging of arbitrary Linux binary 
programs, including those written in C or C++. UndoDB requires no 
recompilation or other modifications to the program being debugged, nor 
does it require any specialized hardware, kernel patches, or kernel modules.

UndoDB uses the ubiquitous gdb as its front-end, so Linux developers 
will feel right at home, and be productive the moment they get started. 
gdb has been complemented with a few new commands which work just like 
gdb's existing commands, only they step the program backwards in time, 
rather than forwards. For example, whereas gdb's step command steps the 
program forwards one source line, UndoDB's bstep command steps the 
program back one source line. UndoDB also compliments gdb's next, until, 
finish, stepi and nexti commands with their respective counterparts: 
bnext, buntil, bfinish, bstepi and bnexti. UndoDB also adds some new 
commands which have no parallel in gdb, such as the bgoto and bgoton 
commands, which jump to an arbitrary point in the program's history. 
When the program is paused at any point in its history, the programmer 
can inspect the full state of their program using the usual gdb commands 
(e.g. print, backtrace and display).

Although UndoDB is not open source, developers who don't get paid for 
their work can use UndoDB for free. For professional use, UndoDB costs 
between $195 and $495 per seat. There is also a free 30-day evaluation 
version. UndoDB is available now, from http://undo-software.com/.
References

[1] NIST -- Software Errors Cost U.S. Economy $59.5 Billion Annually 
http://www.nist.gov/public_affairs/releases/n02-10.htm.

[2] Dr. Dobb's Journal, May 09, 2005 -- Omniscient Debugging (RetroVue 
at Work) http://www.ddj.com/dept/debug/184406101?pgno=5.
Notes to Editors

Undo Ltd is a privately held software company based in Cambridge, UK. It 
was founded by Greg Law and Julian Smith in 2005. Both hold a Ph.D. and 
have worked in the computer industry for many years. The company was 
formed out of the founders' frustration with existing debugging tools. 
UndoDB is Undo Software's first product.
Contact Details

Email support@undo-software.com, visit http://undo-software.com/ or call 
Greg Law on +44 7712 588 091 for more information.

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



(Log in to post comments)

Copyright © 2007, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds