| | |

UndoDB

Today reversible debugging is all the rage. UndoDB is the original reverse debugger for compiled programs, and remains the debugger of choice for professional software development. Reversible debugging adds a few new commands to the familiar next/step type commands to move the program forwards. These new commands step your program backward. More accurately, UndoDB allows the programmer to view the program's state at any point in the program's execution history.

UndoDB brings new commands that allow the user full control over time in their debugging session. Users can:

  • Step back line-by-line (bstep).
  • Step back over function calls (bnext).
  • Jump back to a function's call-site (bfinish).
  • Step back machine instructions (bstepi, bnexti).
  • Run backwards to watchpoint or breakpoint (bcontinue).
  • Jump back/forwards to an arbitrary point in history (bgoto).

UndoDB works just like a conventional debugger - debugging unmodified user processes (i.e. no need to recompile debuggee applications). The UndoDB reverse execution engine is highly optimized, allowing most programs to be run with a slow-down compared to native execution of 1.7x or less. Advanced features include backwards watchpoints, a circular buffer event log for long-running applications, and much more besides.

UndoDB can be used with versions of gdb earlier than 7.0, or can be used to "plug-in" to gdb 7's native reversible debugging capabilities in order to provide a much enhanced reverse debugging solution.

Debuggee applications

UndoDB can be used on almost any application, including those that use:

  • Multiple threads.
  • Signal handlers.
  • Dynamic libraries.
  • Almost all x86 instructions (SSE2, SSE3 and SS4, rdtsc, etc).
  • Shared memory.
  • ioctl calls.
  • Custom system libraries (e.g. malloc or threading).
  • Directly mapped device memory (e.g. openGL or Infiniband).

Documentation

For user documentation, please see the UndoDB man page.

The file undodb_example.txt contains a log of two UndoDB sessions, showing the effects of the various backwards stepping commands.

See the SUPPORTED SYSTEMS section near the bottom of the online man page for details about which Linux distributions and versions UndoDB supports.

For a history of changes to UndoDB (bug fixes, new features etc), please see the Changelog.

Now there are no more difficult bugs! If you can save just a couple of days chasing one nasty bug, the chances are that UndoDB has already paid for itself. Download the trial version today to see just how much more effective a programmer you can become.

quote

As seen in:
see us in Linux Format

Copyright © Undo Ltd, 2005-2010. Design: JFAD Ltd