UndoDB is a high-performance record-and-replay reversible debugging tool for Linux.
UndoDB brings reversible debugging to complex, real-world applications. Undo can be used from the command line, DDD, Emacs and Eclipse.
Download a free trial version here.
UndoDB's performance and low memory consumption allow you to step your application backward, as well as forward, faster than any other commercial or open-source reversible debugger. By stepping back in your program, setting a watchpoint or replaying non-deterministic bugs, you can get straight to the root cause of the bugs upsetting your customers, decreasing your productivity and slowing your software releases.
Debugging with UndoDB Advantages:
- Reverse capabilities: Step back to the preceding instruction, source line, function call or brakpoint.
- Watchpoints: Run back to a watchpoint to discover when a variable was last changed. For example, put a watchpoint on a corrupted memory location and run backwards - the watchpoint triggers at the thread/code that most recently modified that location. See our screencast for an example debugging session using watchpoints here.
- Jump to any point in your program's history: Jump directly to areas of code that are suspected to be corrupted.
- Faithful replay: Non-deterministic bugs will be replayed when the user moves forward in the program. The program will follow exactly the same path.
- Seamless integration: Undo is a drop-in replacement for gdb and therefore seamlessly integrates into developers' work flow. UndoDB can be used at the command line, from Eclipse, DDD or Emacs, allowing developers to choose their preferred work environment. See our screencast on how to use UndoDB with Eclipse here.
Reversible debugging on Linux that really works:
The UndoDB Linux debugger uses a "snapshot-and-replay" technique, which stores periodic copy-on-write snapshots of the application and non-deterministic inputs (system calls, thread-switches, shared memory reads, etc). This means a typical CPU-intensive application can run with just 1.7x slow-down compared to native execution, and IO bound applications at close to native speed. Memory requirements are also (comparatively) extremely low.
|Native||UndoDB||GDB process record*|
|Time||1.49s||2.61s (1.75x)||21 hours (50,000x)|
*GDB times extrapolated from 16K file. Benchmarksperformed on Intel(R) Xeon(R) CPU E5-2620 0 @2.00GHz with FSF gdb 7.6
Being quicker when fixing bugs:
Debugging dominates software development. By augmenting familiar debugger operations with reverse counterparts, bugs that would usually take days or weeks to solve can – literally – be found and fixed in minutes. The return on investment here is clear: the less time developers spend debugging, the more time they spend adding value to your business; being quicker when fixing bugs enables you to release better quality software, hit your scheduleds and delight your customers.