Reverse debugging with ReplayEngine

Record and replay debugging race conditions and deadlocks in Linux applications

Reverse debugging records the execution history of your program and makes that history available for diagnosis. This new approach — working back from a failure, error, or crash to its root cause — eliminates the need to restart your program repeatedly with different breakpoint locations. The ability to do reverse debugging, stepping freely both forwards and backwards through program execution, drastically reduces the amount of time invested in troubleshooting your code. Learn more about TotalView for HPC and CodeDynamics.

Replay on Demand allows developers to enable reverse debugging whenever they need to, even in the middle of a debugging session. The decision to use reverse debugging does not need to be made prior to starting the application. Instead, you can quickly run past the part of the program that is working correctly and engage reverse debugging as you reach the part you need to study more carefully.

Save and restore functionality means you can save execution history to a file and load it later to continue a debugging session. This opens up collaboration opportunities and makes it more convenient to debug. Recording files can be created in test environments and then examined at the development team's convenience on development systems.

Reverse debugging is supported for applications written in C, C++, or Fortran on Linux x86 or Linux x86-64 platforms and works on both serial and parallel (MPI) programs. Supported parallel environments include Ethernet and Infiniband-based clusters as well as the Cray XE with its Gemini interconnect.

Product image: Application where the program counter has stepped backwards a few steps

Application where the program counter has stepped backwards a few steps - click to enlarge

Watch our introduction to reverse debugging video

Reverse debugging supports recording and replaying:

  • Heap memory usage
  • Process file and network I/O
  • Thread context switches
  • Multithreaded applications
  • MPI parallel applications
  • Distributed applications
  • Network applications

Download a free evaluation copy of TotalView and try it for yourself.

Learn more about our capabilities.