About

URDB is a universal reversible debugger that can add reversibility to almost any debugger through a python-based wrapper. URDB is still experimental. It currently has four personality modules, which support: gdb; MATLAB; python (pdb); and perl (perl -d). URDB gains its reversibility through the use of DMTCP (Distributed MultiThreaded CheckPointing), a fast checkpoint-restart package.

URDB also supports reverse expression watchpoints for general expressions that might change non-monotonically. This is a form of temporal search within a process lifetime. For example, consider a user debugging with gdb and URDB. Suppose the current value of a user-specified expression is incorrect, indicating a bug. A user debugging with gdb would then ask URDB to go back to a point in time to when: (a) the expression had a correct value, and (b) the next statement would cause the expression to take on an incorrect value. This is implemented using binary search: if n statements have been executed, URDB can then find the required point in time using only log 2 n probes in time, evaluating the expression at each of the log 2 n. Note that for n as large as 1015 statements, log 2 n is only about 50.

For further information, see the URDB Sourceforge project page