> We can snapshot the program whenever something non-deterministic happens (syscall, I/O, etc) and then we just reconstruct the program state at any moment by rewinding it to the nearest snapshot and executing the code from there. This is basically what UDB, WinDBG and rr do.
QEMU does this too. This plus its GDB stub means one can time-travel-debug pretty much anything on any emulated architecture.
QEMU does this too. This plus its GDB stub means one can time-travel-debug pretty much anything on any emulated architecture.
https://www.qemu.org/docs/master/system/replay.html