Reverse debugging

Restriction: Reverse Debug and Live Recording functionality is licensed and installed separately from undo.io. You can enable reverse debug functionality by downloading the extension from the Micro Focus Marketplace.

This functionality is only supported on the following platforms:

  • Red Hat Linux (x86 and x64)
  • SUSE Linux Enterprise Server (SLES) 12 SP2 (x64 only)
  • Ubuntu Linux 20.04.x (LTS) (x64 only)

Additional restrictions apply. For details, see the Reverse Debug and Live Recording topic in the Known Issues and Restrictions section of this documentation.

Reverse debugging allows you to step backwards (and forwards) through already executed statements in the Eclipse debugger.

When you step backwards through a previously executed statement, the effect of that statement is undone, and variable values displayed in the debugger revert to their prior values.

The option to turn on reverse debugging is provided within the COBOL Application debug configuration: expand the Options section, and select Enable Reverse Debug.

With reverse debugging enabled, the debugger toolbar shows additional 'reverse' versions of debugger options; for example, Reverse Step Into, Reverse Step Over, Reverse Step Return, and Reverse Resume.

This feature also adds reverse versions of the Eclipse Debugger keyboard shortcuts for advancing execution. Pressing Alt + the normal shortcut key gives the reverse version of these options; for example, F5 is the shortcut for Step Into, and Alt+F5 is the shortcut for Reverse Step Into.

Breakpoints set in the debugger also affect reverse execution. Running full speed in reverse (launched with Reverse Resume) will stop when a breakpoint is encountered, just as with forward execution.

This support includes the ability to remotely debug applications executing on Red Hat and SUSE Linux, even if the Eclipse debugger is actually installed and running on Windows; see Debugging Using a Remote Machine for more information.

Only COBOL applications built to native binary formats are supported for reverse debugging; that is, .gnt files, shared objects, and native executables are supported, but .int files are not.