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.
|