Execution record and replay
This feature allows you to record the debugger controlled execution of your system, and then replay this recording when the debugger is stopped. One could regard this feature as a rewind/forward, or undo/redo of the execution calls.
In practice,
- the debugger is recording the effective routine calls, and the attribute assignments, as well as the local variable assignments.
- when the execution is stopped, you can replay the previous execution from its recording.
- when replaying a recorded execution, the debugger restores the recorded values, and changes the execution cursor to show the recorded context (values, calls) in the debugging tool.
- This way you can use the standard debugging tools to view, inspect the values, browse the calls, and even evaluate expressions on objects ( but, be careful, if you evaluate expressions to avoid side effects).
The execution record and replay functionalities are graphically available on the Call stack tool, or though the "Execution" menu (formerly the "Debug" menu).
How to use it
Caution: There is a specific limitation that once routine's information (not yet called ...) are not recorded and thus not restored as one might expect (for instance, the debugger does not reset a once during replay). This may be changed in a later release.
Caution: Be aware that there is a logical limitation concerning the world external to EiffelStudio. That is, it is not possible for EiffelStudio to record and replay external changes such as file or database modifications.
Likewise if, during an external routine call, some Eiffel values are changed, those are not recorded (and thus not replayed).