Undo documentation

Your guide to UDB and LiveRecorder



This documentation explains how to use UDB - a powerful Time Travel Debugger for Linux based applications, and LiveRecorder - Undo’s flagship product platform for rapid software defect diagnosis & resolution.

UDB allows you to go back to any point in the debuggee’s execution history, including stepping backwards and forwards by individual instructions, source lines, function calls and so on. It can regenerate the complete state of the debuggee process at any point in its execution, including information that is destroyed during execution.

LiveRecorder includes:

Version History

Release 6.5
  • Time Travel Debug for C/C++ extension for Microsoft Visual Studio Code. Enables UDB’s Time Travel debugging capabilities in Microsoft’s Visual Studio Code editor. Requires UDB 6.5.

  • Added syntax highlighting for source code displayed by UDB, for instance when stopping at a breakpoint, when invoking the list command, or in TUI mode.

  • Added support for debuginfod in UDB. This allows UDB to fetch debug info and source code from debuginfod servers specified with the space-separated environment variable DEBUGINFOD_URLS.

  • Reverse commands now uniformly respect the same arguments (repeat count) and context (current frame) as their forwards equivalents.

  • Upgraded the version of GDB that is packaged with UDB from 9.2 to 10.2. Details of the various bugs that this fixes can be found at GDB News .

  • Deprecated all commands starting with the uinfo, ushow, uset and uclear prefixes in favour of the equivalent GDB prefixes:

    • uinfoinfo

    • ushowshow

    • usetset

    • uclearunset

    Prefixes which don’t have a GDB equivalent, like ugo, were not renamed.

Release 6.4
  • Status Prompt: UDB’s prompt displays the status of the debugged program and the progress through its execution history.

  • Undo/Redo: New UDB commands ugo undo (uu) and ugo redo (ur) support undoing and redoing navigation and time-travel commands.

  • Changed the default UDB event log mode to circular. This means that when the event log reaches its maximum size, old events are dropped to make room for new ones, allowing the program to continue running.

  • [Beta] Time Travel Debug for C/C++ extension for Visual Studio Code. Enables UDB’s Time Travel Debugging capabilities in Microsoft’s enormously popular Visual Studio Code (VS Code) editor. Download the extension from Undo’s Community Forum.

  • Reverse step commands (reverse-finish, reverse-next, reverse-nexti, reverse-step, reverse-stepit, reverse-until) remain in the same thread and are more consistently performant. The stepi and reverse-stepi commands can still be used to forward or reverse step single instructions while following thread switches.

  • [Experimental] A record-time option provides 2-6x speedup by exploiting multiple CPU cores when performing reverse navigation commands including reverse-next, reverse-finish and reverse-continue.

Release 6.3
  • Bookmarks that you place when replaying a LiveRecorder recording in UDB are automatically persisted across debugging sessions.

  • UDB displays a progress indicator when performing a long-running time travel operation.

  • Further improved the performance of the reverse-next command and other reverse operations, and improved the correctness of these operations when debugging highly optimized code.

  • UDB now uses styles and colours in the text printed at startup.

Release 6.2
  • Improved performance of reverse operations in a number of situations including long-running operations and operations which stay in the same thread.

  • Deprecated all command line options starting with --undodb- in favour of options without any prefix. Refer to the changelog.txt file or product documentation for details.

Release 6.1
  • UDB is the new name for UndoDB. Existing --undodb command-line options will be retained for 6.x releases.

  • Upgraded the version of GDB that is packaged with UDB from 8.1 to 9.2. New GDB features, such as new commands and styled output, are described at GDB News under the relevant sections.

  • Upgraded the version of Python that is packaged with UDB and that is used by C++ pretty-printers from 2.7 to 3.6. Python 2 only pretty printers shipped by older supported distros are converted automatically at load time into Python 3.

  • The Log Jump feature is now enabled for all existing and new UDB and LiveRecorder customers.

Release 6.0
  • Support for applications written in the Java language.

  • Recordings are portable across machines with different CPU microarchitectures. See Recording Portability for details.

  • Core engine 25%-100% faster than 5.0 on diverse workloads.

Release 5.3
  • Support for applications written in the Java language [Beta].

  • Log Jump supports jumping from a line in a log file to the location and time in the program where it was emitted.

  • Post Failure Logging tool to insert logging statements into a deployed application. Enables diagnosing applications deployed in PII and IP-sensitive environments.

  • UDB Automation API to automate workflows in UDB using Python.

Release 5.2
  • Support for applications written in the Java language [Alpha].

  • Support for AVX-512 x86 instructions (avx512f, avx512bw, avx512cd, avx512dq, avx512vl).

  • Increased default event log size to 256MB when recording 32-bit processes and 1GB when recording 64-bit processes.

Release 5.1
  • Support for applications written in the Go language, see GoLand and Go Delve.

  • Fast Switch between inferiors when replaying MPC recordings.

  • Time Limits allow all navigation within a recording to be constrained within a time (bbcount) range. See help set time-limits in udb.

  • Support for x86 Memory Protection Keys (pkeys).

Release 5.0: