UDB is an interactive time travel debugger for Linux C/C++ used in inner-loop development.
Debug a live process and replay the process’s execution history to get instant visibility into what your process just did, and why.
Ideal for quickly debugging race conditions, segmentation faults, stackoverflow errors, double free or memory corruption.
- Fix bugs faster by reducing debugging down to just one cycle
- Get to the root cause of bugs with 100% certainty
- Understand unfamiliar codebase
Download UDB to explore some of the features of time travel debugging.
Time travel debugging greatly improves team productivity in development.
- Travel forward and backward in time to inspect program state
- Replay program execution to understand exactly what went wrong and why
- Simply see what happened rather than trying to figure it out
Time travel debugging greatly improves team productivity in development.
- Travel forward and backward in time to inspect program state
- Replay program execution to understand exactly what went wrong and why
- Simply see what happened rather than trying to figure it out
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.
Working in Visual Studio Code?
Integrate UDB into VS Code to debug directly from your preferred IDE. View the documentation for more information.
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 the tutorial on how to debug C/C++ race conditions with UDB.
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 the tutorial on how to debug C/C++ race conditions with UDB.
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, i.e. user after free errors, memory leaks
- 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 see what went wrong by just travelling back in your program’s execution history.
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
- Reduce onboarding ramp time: enable new joiners to get up to speed with the code faster
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
- Reduce onboarding ramp time: enable new joiners to get up to speed with the code faster
Try UDB for free to explore some of the features of time travel debugging.
Explore LiveRecorder for the full time travel debugging experience: integration with your CI, system test, and bug tracker to debug failures from days or weeks ago; storing of recordings to collaborate on bug fixing across teams; additional capabilities like thread fuzzing, multiprocess correlation, post-failure logging.
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 LiveRecorder.
LiveRecorder provides a team solution by integrating into your CI / System Test / Bug Tracker. In so doing, you can:
- Automate recording of test failures
- Store recordings for root-cause analysis days or weeks later
- Collaborate on recordings across teams for effective asynchronous collaboration (recordings are portable and shareable)
- Access the thread fuzzing capability to expose concurrency bugs in multithreaded codebases
- Access the multi-process correlation for shared memory functionality
Yes! We have an Educational License Program in place. Learn more