UndoDB reversible debugging tool for Linux

UndoDB is a high-performance record-and-replay reversible debugging tool for Linux.

Try it for free

What is UndoDB?

UndoDB’s performance and low memory consumption allows 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.

Advantages

Reverse capabilities:

Step back to the preceding instruction, source line, function call or breakpoint.

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 the thread/code that most recently modified that location.

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 in the developer’s workflow.

UndoDB can be used at the command line, from Eclipse, DDD or Emacs, allowing developers to choose their preferred work environment.

Trusted by

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.16s (1.75x) 21 Hours (50,000x)
Space N/A 17.8MB 63GB

GDB times extrapolated from 16k file. Benchmarks performed on Intel(R) CPU E5-26200@2.00 GHz with FSF gdb 7.6

Being quicker when fixing bugs

Debugging dominates software development. By augmenting familiar debugging 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 schedules and delight your customers.

Try it for free

Quality is a non-negotiable aspect of our software development. When we do encounter bugs we need to resolve them as quickly as possible. Recently we had an intermittent issue and were unable to resolve it using traditional debugging techniques. We switched to an Undo session and we were able to run in reverse to locate the root cause in a matter of a few hours. Undo enabled us to resolve this issue and quickly provide a fix for our customer.

Jonathan DeKock
Senior Software Architect
Cadence Design Systems

Videos