5 ms·
Till now, I believed this was impossible to do.
by muon 17y ago
Till now, I believed this was impossible to do.
- adamt 17y agoIt's been possible for quite some time. Someone I vaguely know set up a startup back in 2006 looking to do just this: http://undo-software.com/ http://undo-software.com/
- zandorg 17y agoIn 2006, I wanted to see if it was possible, so I wrote (in C++) a virtual CPU with 2 registers (A and Program Counter) and input (In/Out ports) and the basic idea was it'd log everything (per cycle) in a reversable form. Unfortunately I was too lazy to finish it, but I think it would have worked. It was just a proof of concept.
- woadwarrior01 17y agoOcaml's debugger has a similar time travelling feature.
- huhtenberg 17y agoYou believe incorrectly. Borland C++ IDE supported reverse execution back in early 90s.
- msnyder 17y agoYes, but AFAIK that was only for a very limited duration trace buffer. You're right, it is basically the same thing, but gdb can now do it for millions of instructions.
- mahmud 17y agoAs long as you run it forward once, you should be able to do reverse execution. What you consider "impossible" is taking a binary and executing it from its last instruction up to the first: that would be impossible, or at least ill specified, because a program could have many exit points, but only one entry point.
- kijiki 17y agoVMware Workstation can do this for entire VMs. They call it "replay" IIRC.