|
@@ -265,6 +265,16 @@ of the original disk image, use overlay files linked to the original images.
|
|
Therefore all new snapshots (including the starting one) will be saved in
|
|
Therefore all new snapshots (including the starting one) will be saved in
|
|
overlays and the original image remains unchanged.
|
|
overlays and the original image remains unchanged.
|
|
|
|
|
|
|
|
+When you need to use snapshots with diskless virtual machine,
|
|
|
|
+it must be started with 'orphan' qcow2 image. This image will be used
|
|
|
|
+for storing VM snapshots. Here is the example of the command line for this:
|
|
|
|
+
|
|
|
|
+ qemu-system-i386 -icount shift=3,rr=replay,rrfile=record.bin,rrsnapshot=init \
|
|
|
|
+ -net none -drive file=empty.qcow2,if=none,id=rr
|
|
|
|
+
|
|
|
|
+empty.qcow2 drive does not connected to any virtual block device and used
|
|
|
|
+for VM snapshots only.
|
|
|
|
+
|
|
Network devices
|
|
Network devices
|
|
---------------
|
|
---------------
|
|
|
|
|
|
@@ -294,6 +304,42 @@ for recording and replaying must contain identical number of ports in record
|
|
and replay modes, but their backends may differ.
|
|
and replay modes, but their backends may differ.
|
|
E.g., '-serial stdio' in record mode, and '-serial null' in replay mode.
|
|
E.g., '-serial stdio' in record mode, and '-serial null' in replay mode.
|
|
|
|
|
|
|
|
+Reverse debugging
|
|
|
|
+-----------------
|
|
|
|
+
|
|
|
|
+Reverse debugging allows "executing" the program in reverse direction.
|
|
|
|
+GDB remote protocol supports "reverse step" and "reverse continue"
|
|
|
|
+commands. The first one steps single instruction backwards in time,
|
|
|
|
+and the second one finds the last breakpoint in the past.
|
|
|
|
+
|
|
|
|
+Recorded executions may be used to enable reverse debugging. QEMU can't
|
|
|
|
+execute the code in backwards direction, but can load a snapshot and
|
|
|
|
+replay forward to find the desired position or breakpoint.
|
|
|
|
+
|
|
|
|
+The following GDB commands are supported:
|
|
|
|
+ - reverse-stepi (or rsi) - step one instruction backwards
|
|
|
|
+ - reverse-continue (or rc) - find last breakpoint in the past
|
|
|
|
+
|
|
|
|
+Reverse step loads the nearest snapshot and replays the execution until
|
|
|
|
+the required instruction is met.
|
|
|
|
+
|
|
|
|
+Reverse continue may include several passes of examining the execution
|
|
|
|
+between the snapshots. Each of the passes include the following steps:
|
|
|
|
+ 1. loading the snapshot
|
|
|
|
+ 2. replaying to examine the breakpoints
|
|
|
|
+ 3. if breakpoint or watchpoint was met
|
|
|
|
+ - loading the snaphot again
|
|
|
|
+ - replaying to the required breakpoint
|
|
|
|
+ 4. else
|
|
|
|
+ - proceeding to the p.1 with the earlier snapshot
|
|
|
|
+
|
|
|
|
+Therefore usage of the reverse debugging requires at least one snapshot
|
|
|
|
+created in advance. This can be done by omitting 'snapshot' option
|
|
|
|
+for the block drives and adding 'rrsnapshot' for both record and replay
|
|
|
|
+command lines.
|
|
|
|
+See the "Snapshotting" section to learn more about running record/replay
|
|
|
|
+and creating the snapshot in these modes.
|
|
|
|
+
|
|
Replay log format
|
|
Replay log format
|
|
-----------------
|
|
-----------------
|
|
|
|
|