The debugger component that runs on same machine as the program being debugged, and receives commands from the frontend. In UDB, the backend is udbserver. See Remote debugging.


A unit of execution history of a program. Broadly analogous to a basic block. See Time notation.


A count of BBs executed by a program, which serves as a coarse-grained measure of how much code has run so far. Represented by an integer starting at 1 and increasing as execution progresses. See Time notation.


A named time in execution history. See Bookmarks.


A location at which the program will be stopped and control returned to the debugger. See Breakpoints.

Bundled GDB

A custom build of GDB packaged as part of a release of UDB.

data breakpoint

Another term for watchpoint.

data race

A type of software defect in which multiple threads or processes are racing to update a data structure, and the correctness of the behaviour depends on which one wins the race.

deferred-recording mode

In this mode, the program is neither being recorded nor replayed, and execution can only proceed forwards. To switch to record mode, use the urecord command. See Deferred recording.


A standardised debug data format. See DWARF.

event log

A record of non-deterministic events in the execution history of a program. See Event log.

execution history

A record of the behaviour of a program in a form that can be replayed by UDB.


The debugger component that runs on the user’s machine, and issues commands to the backend. In UDB, the frontend is udb.

inferior process

A program being debugged.

inferior call

A call from UDB to code in the program being debugged. See Inferior calls.


The Keyserver is Undo’s license server. This component needs to be installed if UDB is to be used with a floating license. The machine running UDB needs to have network access to the machine running the Keyserver.


An Undo product including live-record, a command-line tool for recording the execution history of a program and saving it as a LiveRecorder recording, and the LiveRecorder API that allows any program to record and save its own execution history.

LiveRecorder recording

A file containing the execution history of a program in a form that can be replayed by UDB. See Loading and saving recordings.

program counter

A register whose value is the address of an instruction to be executed. When the program is stopped in the debugger, its value is typically the address of the next instruction to be executed. See Time notation.


A Python function registered with UDB that formats values from the program being debugged. The info pretty-printer command lists the registered pretty-printers.

record mode

In this mode the program’s execution history is being recorded so that it can be saved or replayed. As long as execution proceeds forwards, the program remains in record mode, but reverse-execution commands and time-travel commands need to switch to replay mode.

replay mode

In this mode, the program is at a time earlier than the latest time in its execution history, or UDB is replaying a LiveRecorder recording.

reverse debugger
reverse debugging

An alternative name for time travel debugger / debugging.

reverse-execution commands

UDB commands that execute the program as if in reverse, stopping at breakpoints and signals. See Executing the program in reverse.

shared memory

Memory that can be simultaneously accessed by multiple programs. See shared memory.


A form of inter-process communication that interrupts the execution of the recipient. See signal.


A representation of the state of a program at a particular time in its execution history. See Snapshots.

symbol file

A file containing information about the symbols in an executable file that may be useful for debugging that executable, including the symbol names, and the source files and line numbers where they originated. Symbol files may be created alongside executable files at compilation time, or extracted from executables containing symbols. Symbol files may also contain additional DWARF-formatted debugging information.

system call

A request from a user-space program to the operating system. See system call.

temporary breakpoint

A breakpoint that is automatically deleted when it is hit. Create a temporary breakpoint using the tbreak command.

Thread Fuzzing

A configuration of the Undo Engine in which it varies the times at which it switches between program threads in record mode, to attempt to reproduce data races and other concurrency bugs. See Thread Fuzzing.


A point in the execution history of a program, represented by a bbcount and a program counter value. See Time notation. Compare with wall-clock time.

time-travel commands

UDB commands that jump to a time in the program’s execution history. Unlike reverse-execution commands, these commands do not stop at breakpoints <breakpoint> and signals. See Time-travel commands.


The UDB frontend program.


Undo’s interactive time travel debugger.

UDB session

A record of user data, including bookmarks, associated with a LiveRecorder recording. See UDB session commands.


The UDB backend program. See Remote debugging.


A former name for UDB.

UndoDB Server.

A former name for udbserver.

Undo Engine

The technology implementing record, replay, and time travel debugging.


A former name for LiveRecorder.

volatile mode

In this mode, the program is executing instructions but they are neither being recorded nor replayed, and any state changes will be discarded when the program returns to replay mode. See Inferior calls.

wall-clock time

A description of a calendar date and clock time. See Log Jump. Compare with time.


A watchpoint is a type of breakpoint that stops the program when the value of an expression changes. See Watchpoints.