URDB is a universal reversible debugger that adds reversibility to almost any debugger through a python-based wrapper. URDB is still experimental. URDB supports multi-threaded and multi-process applications, as well as distributed computations. 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, a form of temporal search within a process lifetime. For example, the current value of a user specified expression indicates a bug. The user asks URDB/gdb to go back in time to a statement where the expression is about to take on its current value. This uses binary search: if n statements have been executed, URDB finds the point in time using only log2 n evaluations of the expression.
For further information, see the URDB Sourceforge project page.
To obtain the most recent (possibly unstable) source from subversion,
run the following command:
svn co https://urdb.svn.sourceforge.net/svnroot/urdb/trunk urdb