Find and fix C/C++ bugs
in minutes with UDB

UDB

The interactive time travel debugger
for Linux C/C++ for debugging live processes

Attach UDB to a running process, record the execution, and replay that execution history to get instant visibility into what the process just did, and why. No more guesswork!

Travel back and forth in the recording to inspect program state at any point in the execution history.

Simply follow the trail from symptom to root cause in a single debug cycle – cutting out the multiple debug iterations and saving you tons of time!

Ideal for quickly debugging all types of bugs – especially the hardest ones which remain unresolved for months, or take days to diagnose including:

  • Race conditions
  • Deadlocks
  • Memory corruptions
  • Segfaults
  • Stack corruptions

Also used for quickly understanding code you didn’t write.

HOW DOES IT WORK?

UDB delivers the full power of a modern debugger with variable and memory inspection, scripting, conditional breakpoints and watchpoints – all available in forward and reverse directions.

UDB CAN BE USED IN 2 WAYS

Start a process in UDB

Use the run command in UDB to run the program or follow these instructions in VS Code

Attach UDB to a running process

Attach UDB to an existing process using the udb --pid PID command-line option or from the Run menu in VS Code, select Add Configuration, and then C/C++: (UDB) Attach.

Image link

WATCH BELOW HOW IT WORKS

100% compatible with GDB, so no need to learn a new tool – just a handful of new commands.
Also available as a VS Code extension or CLion plugin.

KEY FEATURES

GDB COMPATIBLE
If you’re already familiar with GDB, it’s just a handful of new commands to unleash the power of time travel.
See Quick Reference Guide
IDE INTEGRATION

Integrate UDB into Visual Studio Code to debug directly from your preferred IDE.
View the documentation for more information. You can also use UDB in CLion, Eclipse, and Emacs.

NO EXTRA SET UP REQUIRED
No compilation or build changes required. No kernel or system configuration.

Want unlimited record capabilities, portable recording files, integrations, and capture bugs in production?

UDB is perfect for individual developers.

But if you want unlimited record capabilities, portable recording files to replay any time anywhere, integrations with your CI or test automation suite, or capture bugs in production as well as support for other languages, check out the full Undo Suite for teams.

Image link

COMMON QUESTIONS

UDB runs on most modern Linux distributions and supports both 32 and 64-bit x86 programs. For more details, see the full list of system requirements.

Just UDB binaries.

No, only user space.

We use binary instrumentation to capture only the bare minimum data required to record execution as efficiently as possible. To keep the overhead low, we don’t translate instructions that don’t require it.

Yes.

UDB is currently used on some of the world’s most complex software, including heavily multithreaded applications and those using shared memory.

Check out the UDB Quick Reference guide for the full command set available.

UDB is an interactive time travel debugger used by a single developer in inner-loop development. UDB is a component of Undo.

Undo provides a team solution by integrating into your CI / System Test / Bug Tracker. In so doing, you can:

  1. Automate recording of test failures
  2. Store recordings for root-cause analysis days or weeks later
  3. Collaborate on recordings across teams for effective asynchronous collaboration (recordings are portable and shareable)
  4. Access the thread fuzzing capability to expose concurrency bugs in multithreaded codebases
  5. Access the multi-process correlation for shared memory functionality
Explore Undo

Yes! We have an Educational License Program in place. Register your interest here