UndoDB is a seamless replacement for gdb on Linux.
Downloading and running
Each license is associated with a unique URL that will always link to the latest version of UndoDB for that license. For example, to download, simply:
$ wget http://undo-software.com/cgi-bin/undodb.tgz?p=57d1dc6b3f5d4503e6708cf0 $ tar -xzf undodb.tgz?p=57d1dc6b3f5d4503e6708cf0 $ cd undodb-3.5.89/ $ ./undodb-gdb -q ./a.out undodb-gdb: Reversible debugging system. Copyright 2006 - 2012 Undo Ltd. undodb-gdb: undodb-3.5.89 undodb-gdb: By running this software you agree to the terms in: undodb-gdb: /downloads/undodb-3.5.89/demo_license.html Reading symbols from /downloads/undodb-3.5.89/a.out...done. (undodb-gdb)
A makefile is provided with an `install' rule that will install undodb-gdb in /usr/local/bin. e.g.
$ cd ~/downloads/undodb-3.5.89/ $ sudo make install installing undodb-3.5.89 to lib=/usr/local/lib bin=/usr/local/bin man=/usr/local/man mkdir -p /usr/local/lib/undodb-3.5.89 /usr/local/bin /usr/local/man/man1 cp -pr * /usr/local/lib/undodb-3.5.89/ cd /usr/local/bin && ln -f -s /usr/local/lib/undodb-3.5.89/undodb-gdb cd /usr/local/man/man1 && ln -f -s /usr/local/lib/undodb-3.5.89/undodb-gdb.1 cd /usr/local/man/man1 && ln -f -s /usr/local/lib/undodb-3.5.89/undodb-limits.1 have created: lrwxrwxrwx 1 root root 45 May 23 10:48 /usr/local/bin/undodb-gdb -> /usr/local/lib/undodb-3.5.89/undodb-gdb drwxr-xr-x 3 root root 4096 May 23 10:48 /usr/local/lib/undodb-3.5.892/ lrwxrwxrwx 1 root root 47 May 23 10:48 /usr/local/man/man1/undodb-gdb.1 -> /usr/local/lib/undodb-3.5.89/undodb-gdb.1 lrwxrwxrwx 1 root root 50 May 23 10:48 /usr/local/man/man1/undodb-limits.1 -> /usr/local/lib/undodb-3.5.89/undodb-limits.1 undodb is now installed. $ undodb-gdb -q undodb-gdb: Reversible debugging system. Copyright 2006, 2007, 2008, 2009, 2010, 2011, 2012 Undo Ltd. undodb-gdb: undodb-3.5.89 undodb-gdb: By running this software you agree to the terms in: undodb-gdb: /usr/local/lib/undodb-3.5.89/demo_license.html (undodb-gdb)
Using undodb-gdb at the command-line
undodb-gdb is a drop-in replacement for gdb. There are some differences though:
- Recording is enabled by default (to start with recording disabled, pass the --undodb-defer-recording command line option).
- The speed and space performance impact of enabling recording is many orders of magnitude reduced.
- The gdb record prefixed commands are unavailable, generally replaced by the superset UndoDB commands that start undodb- (hit undodb-[TAB] at the command-line to see a list of undodb- commands).
Apart from the above difference, undodb-gdb can be used exactly as one would use gdb.
Using undodb-gdb from graphical frontends
Because undodb-gdb is a drop-in replacement for gdb, it can be used from graphical debugger frontends to gdb, including Eclipse and Emacs. (See here for more details).