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
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, among which Undo is the first one to offer the performance and scalability required for debugging complex software, specifically for Linux.
Bugs! A big problem for Developers
Software bugs are a problem for developers, and for businesses. 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 and failing to fix customer-critical bugs risks software companies losing customers.
How UndoDB reduces debugging time!
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. Get your software releases out on time and fix customer-critical bugs.
How UndoDB is ahead of traditional debugging?
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.
UndoDB debugs almost any application, 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)