Undo Software has released UndoDB 3.0, an updated version of the company's reversible debugger for Linux. Reversible debugging (also known as "replay" or "historical debugging") lets developers step or run their application backwards, enabling them to answer the question when debugging: 'How did that happen?'
According to Undo, UndoDB 3.0 can debug almost any Linux process, including those using multiple threads, asynchronous signal handlers, and shared memory. It supports reverse watchpoints, allowing programmers easily to find the root-cause of elusive memory-corruption bugs. UndoDB also allows the entire program state to be wound back to any point in the recorded execution history, yet records with a slow-down over native execution of just 1.7x. No recompilation or any other modifications are required to the process being debugged.
Reversible debugging 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 The Practice of Programming, Brian Kernighan and Rob Pike 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.
Although UndoDB is not open source, developers can use the tool for free for non-commercial use. For professional use, UndoDB costs between $95 and $595 per seat. There is also a free 30-day evaluation version.