Hello! We want to publish set of patches related to the reverse execution and deterministic replay of qemu. Our implementation of deterministic replay can be used for deterministic and reverse debugging of guest code through gdb remote interface.
Execution recording writes non-deterministic events log, which can be later used for replaying the execution anywhere and for unlimited number of times. It also supports checkpointing for faster rewinding during reverse debugging. Execution replaying reads the log and replays all non-deterministic events including external input, hardware clocks, and interrupts. Reverse execution has the following features: * Deterministically replays whole system execution and all contents of the memory, state of the hadrware devices, clocks, and screen of the VM. * Writes execution log into the file for latter replaying for multiple times on different machines. * Supports i386, x86_64, and ARM hardware platforms. * Performs deterministic replay of all operations with keyboard, mouse, network adapters, audio devices, serial interfaces, and physical USB devices connected to the emulator. * Provides support for gdb reverse debugging commands like reverse-step and reverse-continue. * Supports auto-checkpointing for convenient reverse debugging. * Allows "going to the live execution" from the replay mode. Our implementation is completely tested for qemu 1.5 and is in beta state for 2.0.50. Some details about our implementation of reverse execution can be found in paper: http://www.computer.org/csdl/proceedings/csmr/2012/4666/00/4666a553-abs.html Can anyone review our patches? Pavel Dovgaluk