Record and replay debugging

Record and replay debugging is the process of recording the execution of a software program so that it may be played back within a debugger to help diagnose and resolve defects.

[1] The concept is analogous to the use of a flight data recorder to diagnose the cause of an airplane flight malfunction.

[2] Record and replay debuggers record application state at every step of the program's process and thread execution, including memory interactions, deterministic and non-deterministic inputs, system resource status, and store it to disk in a log.

[3] The recording allows the program to be replayed again and again, and debugged exactly as it happened.

Recordings can be made in one location and replayed in another,[4] which makes it useful for remote debugging.