'Reason back from the state of the crashed program to determine what could have caused this. Debugging involves backwards reasoning...'
Brian Kernighan & Rob Pike, 1999: The Practice of Programming
Undo Software's reversible debugger, UndoDB, allows Linux software developers to record their program's execution, and then "wind the tape" back and forth in real-time in order to get a clear picture of their program's execution. This takes much of the guesswork and trial-and-error out of debugging. Bugs that would have taken weeks to solve can now be solved in minutes.
Reversible debugging is the ability to step your application backwards as well as forwards. It has been a holy-grail of development tools research for several decades. There have been many implementations, but Undo is the first to offer the performance and scalability required for debugging complex software, specifically for Linux.
Software bugs are a problem for developers and for business. Not only do developers spend a huge amount of their time debugging, but the unpredictability of bugs makes managing software projects a thankless task. As well as affecting software quality, bugs are a primary cause of slipped development schedules.
Traditional debugging uses single stepping that starts your program running only to freeze it immediately afterwards. Undo does more, allowing you to inspect any part of your program's state at any time.
Almost any Linux application can be debugged with UndoDB, including:
- Applications that use threads, signals, and/or shared memory.
- Applications using custom system libraries (e.g. malloc or threading).
- Applications that directly access hardware (e.g. openGL or Infiniband).