'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. With Undo on your Linux box, you can:
Jump to any point in your program's history.
Step back to the preceding instruction, source line, function call or breakpoint.
Run back to a watchpoint to discover when a variable (or any memory location) was last changed (perfect for memory corruption bugs).
Replay non-deterministic bugs (when you go forwards again, your program will follow exactly the same path as last time).