Reverse debugging with ReplayEngine

Record and replay debugging race conditions and deadlocks in Linux applications

TotalView reverse debugging capability 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.

A TotalView feature, 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.

New in TotalView 8.14: Save execution history to a file and load it in later to continue a debugging session.

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.

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.