ExecutionRecordAndReplay

Revision as of 10:14, 29 June 2009 by Jfiat (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Construction.png Not Ready for Review: This Page is Under Development!

Quick notes about it, need to describe it better (later)

Execution Record and Replay mechanism

Then, when the user decides, he can replay (and restore the variables and attributes' values) according to the records ... and then, you can use the EiffelStudio tools to browser, inspect values, and even evaluate expression on those values (be careful, that your expression evaluation won't be recorded ...). When you are done replaying the recorded execution, the "replayer" will revert changes, and should return the system in the same state it was before the user started the replay.

  • Note that any external calls might introduce erroneous record. For instance if you have a file access, or a socket, or database ... anything which change outside the scope if the Eiffel code, it won't be recorded, and thus won't be replayed.
  • And the "replayer" is not able to revert a once function to its "unevaluated" state.

Recording

  • The generated C code contains some calls such to RTDBG.*, those calls will trigger various events such as entering/exiting a feature, or local assignment, attribute assignment ...
  • The implementation of the recording (and replay) is done in {RT_EXTENSION} (and other RT_DBG_* classes). Check RT_EXTENSION.notify (a_id: INTEGER; a_data: TUPLE).
  • .. to be completed ...

Replay

  • The replay is controlled by EiffelStudio through the debugger (and expression evaluation .. i.e: remote call to control the debuggee)
  • .. to be completed ...