One way to do this is to record the sources of non-determinism in the system (I / O, interrupts) and take snapshots of the states at different intervals. Thus, you can “rewind” by restoring the previous picture and playing forward using recorded non-determinism until you click the desired item in the past.
For example, imagine this timeline:
1 2 3 4
| | | |
, 3. , (, , ) 2 , 3. , - , . , 3.
, , VMWare Replay Debugger (. tech talk).