Archive Index (1999-2012) | 2013-current at | About  

First C/C++ binaries bidirectional debugger targets Linux

May 22, 2006 — by LinuxDevices Staff — from the LinuxDevices Archive — 2 views

A U.K.-based start-up founded by two Ph.D's is shipping a bidirectional debugger for arbitrary Linux binary programs, including those written in C or C++. Undo Software says its UndoDB lets developers “reason backwards” from the point of failure, a technique said to greatly simplify debugging.

Bidirectional debuggers have long been available for interpreted languages, such as Java. However, UndoDB is the first bidirectional debugger available for C and C++ binaries, according too Undo.

Co-founder Julian Smith says Undo chose to release its bidirectional debugger on Linux first because, “Today's Linux market is pretty exciting, not least due to its rapid expansion into consumer electronics and other embedded systems. We believe that the somewhat fragmented nature of the Linux market makes it more accessible for small but innovative companies such as ourselves. There were also technical considerations — for example, UndoDB's technology requires a precise and complete specification of the application/kernel interface, and you can't get a more precise and complete specification than the kernel's source code!”

Undo notes that computing pioneers Brian Kernighan and Rob Pike, on the first page of their book, The Practice of Programming, offer the following debugging advice:

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.

UndoDB requires no recompilation or other modifications, nor specialized hardware, kernel patches, or kernel drivers, Undo says. It lets developers play programs forwards and backwards in “a totally repeatable fashion,” in order to “home in” on the cause of bugs. Bidirectional debugging is most useful for delayed-reaction and intermittent bugs, according to the company.

UndoDB uses the GNU debugger (gdb) as its front-end, for the sake of user familiarity. GDB's next, until, finish, stepi, and nexti commands are available, along with their respective backwards counterparts: bnext, buntil, bfinish, bstepi, and bnexti. UndoDB also adds commands that have no parallel in gdb, such as bgoto and bgoton, which can be used to 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).

Smith boasts, “UndoDB makes even the nastiest bugs trivial to uncover. This is hugely significant, because the unfortunate reality is that most programmers spend most of their time hunting a few nasty bugs. A tool that could reduce the debugging burden by even a few percent would save the software industry a staggering amount of time and money; and UndoDB can do much, much better than that.”


UndoDB is available now, free for non-commercial use. Professional use costs $495 per seat, with an introductory special of $295, including an upgrade to version 2, expected in Q4. A 30-day evaluation version is also available.

This article was originally published on and has been donated to the open source community by QuinStreet Inc. Please visit for up-to-date news and articles about Linux and open source.

Comments are closed.