Replaying Your Program
Before you can replay your program’s statements, you must stop your program’s execution. Either halt your program, or TotalView can stop execution when your program encounters a breakpoint.
Figure 1, ReplayEngine Toolbar in Active State
The ReplayEngine commands include:
*Record (), a toggle that enables and disables ReplayEngine. See Enabling and Disabling ReplayEngine.
*Go Back () displays the state that existed at the last action point. If no action point is encountered, ReplayEngine displays the state that existed at the start of its recorded history.
*Prev () displays the state that existed when the previous statement executed. If that line had a function call, Prev skips over the call.
*Unstep () displays the state that existed when the previous statement executed. If that line had a function call, ­ReplayEngine moves to the last statement in that function.
*Caller () displays the state that existed before the current routine was called.
*Back To () displays the program’s state for the line you select. This line must have executed prior to the currently displayed line. If you wish to move forward within replay mode, select a line and select the Run To button from the main debugging toolbar.
*Live () shifts from replay mode to record mode. It also displays the statement that would have executed had you not moved into ReplayMode.
*Bookmark () creates a ReplayEngine bookmark at a selected location.
*Save () saves the current replay recording session to a file.
The above commands are also available on the Process menu, with indications of the keyboard shortcuts.
NOTE: The ReplayEngine toolbar commands appear only if you are using TotalView on a Linux-x86 (32-bit) or Linux-x86-64 machine. On these platforms, these buttons are permanently disabled if you do not have a ReplayEngine license.
To move forward within the program’s history, use the Step, Next, Run To, and Out buttons. These commands do the same thing in replay or record modes.
You can also set breakpoints in previously executed statements. After setting a breakpoint, pressing the Go button moves you to that statement. You can transform a breakpoint to an evalpoint if the evalpoint uses simple expressions such as “if (x==y+z) $stop”. You cannot, however, create barrierpoints.
If you reach the line that would have been executed if you hadn’t gone into replay mode, you are automatically switched back to record mode and you can then resume program execution. You can also switch back to record mode by clicking the Live button.