Scott David Daniels wrote:
<div class="moz-text-flowed" style="font-family: -moz-fixed">Patrick Sabin wrote:
Horace Blegg schrieb:
You might consider using a VM with 'save-points'. You run the program (in a debugger/ida/what have you) to a certain point (logical point would be if/ifelse/else statements, etc) and save the VM state. Once you've saved, you continue. If you find the path you've taken isn't what you are after, you can reload a previous save point and start over, trying a different path the next time.
That was my idea to implement it. I thought of taking snapshots of the current state every time a "unredoable instruction", e.g random number generation, is done.
Remember, storing into a location is destruction.
Go over a list of VM instructions and see how many of them are undoable.

</div>


Read his suggested approach more carefully. He's not "undoing" anything. He's rolling back to the save-point, and then stepping forward to the desired spot. Except for influences outside his control (eg. file system operations), this approach has to work. Even random will work the same, if the generator uses only data that was restored from the save-point. A typical pseudo-random generator works from a seed, and if the seed is restored as part of rolling back, he's fine. If the snapshot is done via VMWare (for example), he's even okay for file operations, except for network and VM-shared files.

"I thought of taking snapshots of the current state every time a "unredoable instruction", e.g random number generation, is done. For every other instruction I count the number of instructions done since the last snapshot. So I can go back one instruction by restoring to the previous state and go the number of instructions minus one forward."

DaveA

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to