UDB - debugger for C/C++

Find and fix bugs in minutes with time travel debugging


Take the guesswork out of debugging

Capture a live failing process and replay the process execution history to get instant visibility into what your process just did and why.

Ideal to quickly fix race conditions, segmentation faults, stackoverflow errors, double free or memory corruption in C/C++ programs running on Linux x86.

▪️ Fix bugs faster by reducing debugging down to just one cycle
▪️ Get to the root cause of bugs with 100% certainty
▪️ Understand unfamiliar codebases

Travel back in time in your program's execution

Time travel debugging greatly improves team productivity in development. It is also ideal to debug test failures.

▪️ Travel forward and backward in time to inspect program state
▪️ Replay program execution to understand exactly what went wrong and why
▪️ Just see what happened rather than trying to figure it out


Based on GDB, UDB supports source-level debugging for programs written in C/C++, Rust and Ada. 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.

▪️ Time travel debugging (a.k.a. reverse debugging)
▪️ Single step backward or forward
▪️ Run backward or forward
▪️ Breakpoints & watchpoints - running forward or backward
▪️ Full inspection of global & local variable values
▪️ Bookmark points in your program’s execution history
▪️ Jump to specific a moment in time in your program’s execution
▪️ Full compatibility with GDB commands
▪️ CLI or IDE debugging

Play with the arrows above the animation on your left to get a mini taster of how UDB works.

IDE for UDB - VS Code CLion Eclipse Emacs

UDB works where you work - CLI or IDE

You can use UDB as a command-line tool or in an IDE.

▪️ Visual Studio Code
▪️ CLion
▪️ Eclipse
▪️ Emacs

Find out more about getting started with UDB and IDE integration in our technical documentation.

Concurrency bugs

Fix concurrency bugs

Multithreaded and multi-process application architectures help improve performance; but they also increase the risk of challenging concurrency defects occurring, such as race conditions, shared memory corruption, or deadlocks.

UDB is ideal for rapidly debugging concurrency defects.

Read tutorial on how to debug C/C++ race conditions with UDB.

Memory bug

Debug memory management bugs

UDB is also used to rapidly identify the root cause of programming errors related to memory management such as:

▪️ Segmentation faults due to memory access violation
▪️ Double free
▪️ Memory corruption
▪️ Stack corruption i.e. buffer overrun

These can be hard to debug since the root cause may no longer be in scope. With UDB, you can just see what went wrong by travelling back in your program’s execution history.

UDB inspect variable state

Understand what code is doing

Working on complex unfamiliar code you didn't write?

Quickly understand program behavior by navigating forward and backward in the program’s execution history.

Watch variable and memory changes as you navigate - forward and in reverse.

Pricing Plans

Simple: Full features and pricing that provides what you need to fix bugs faster.
Transparent: Grow cost-effectively with volume discounts that scale as your team grows.

for 60 days
Individual Developer Trial
Full features for 60 days
Time travel debugging
No credit card required
per user per month (billed annually, excl. VAT/ local taxes)
Named User License
Full features for 12 months
Time travel debugging
Replay program execution
Basic support + docs
Contact us
annual billing only
Volume Discounts
Time travel debugging
CI/test automation options available
Pro teams support

What developers are saying


Common questions

Here are some frequently asked questions and answers you may find helpful.

Detailed technical documentation is also available at https://docs.undo.io

  • 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.

  • 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.

  • Yes! We have an Educational License Program in place. Learn more

Fix bugs faster with time travel debugging