[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 35/37] replay: describe reverse debugging in docs/replay.txt
From: |
Paolo Bonzini |
Subject: |
[PULL 35/37] replay: describe reverse debugging in docs/replay.txt |
Date: |
Tue, 6 Oct 2020 09:29:45 +0200 |
From: Pavel Dovgalyuk <Pavel.Dovgaluk@ispras.ru>
This patch updates the documentation and describes usage of the reverse
debugging in QEMU+GDB.
Signed-off-by: Pavel Dovgalyuk <Pavel.Dovgalyuk@ispras.ru>
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
--
v4 changes:
- added an example of the command line for reverse debugging of
the diskless machine
Message-Id: <160174523509.12451.1409905901920738979.stgit@pasha-ThinkPad-X280>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
docs/replay.txt | 46 ++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 46 insertions(+)
diff --git a/docs/replay.txt b/docs/replay.txt
index 8952e6d852..87a64ae068 100644
--- a/docs/replay.txt
+++ b/docs/replay.txt
@@ -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
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
---------------
@@ -294,6 +304,42 @@ for recording and replaying must contain identical number
of ports in record
and replay modes, but their backends may differ.
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
-----------------
--
2.26.2
- [PULL 22/37] configure: consistently pass CFLAGS/CXXFLAGS/LDFLAGS to meson, (continued)
- [PULL 22/37] configure: consistently pass CFLAGS/CXXFLAGS/LDFLAGS to meson, Paolo Bonzini, 2020/10/06
- [PULL 25/37] replay: provide an accessor for rr filename, Paolo Bonzini, 2020/10/06
- [PULL 21/37] configure: do not clobber environment CFLAGS/CXXFLAGS/LDFLAGS, Paolo Bonzini, 2020/10/06
- [PULL 24/37] replay: don't record interrupt poll, Paolo Bonzini, 2020/10/06
- [PULL 26/37] qcow2: introduce icount field for snapshots, Paolo Bonzini, 2020/10/06
- [PULL 27/37] migration: introduce icount field for snapshots, Paolo Bonzini, 2020/10/06
- [PULL 28/37] qapi: introduce replay.json for record/replay-related stuff, Paolo Bonzini, 2020/10/06
- [PULL 29/37] replay: introduce info hmp/qmp command, Paolo Bonzini, 2020/10/06
- [PULL 30/37] replay: introduce breakpoint at the specified step, Paolo Bonzini, 2020/10/06
- [PULL 35/37] replay: describe reverse debugging in docs/replay.txt,
Paolo Bonzini <=
- [PULL 32/37] replay: flush rr queue before loading the vmstate, Paolo Bonzini, 2020/10/06
- [PULL 31/37] replay: implement replay-seek command, Paolo Bonzini, 2020/10/06
- [PULL 33/37] gdbstub: add reverse step support in replay mode, Paolo Bonzini, 2020/10/06
- [PULL 34/37] gdbstub: add reverse continue support in replay mode, Paolo Bonzini, 2020/10/06
- [PULL 36/37] replay: create temporary snapshot at debugger connection, Paolo Bonzini, 2020/10/06
- [PULL 37/37] tests/acceptance: add reverse debugging test, Paolo Bonzini, 2020/10/06
- Re: [PULL 00/37] Build system + accel + record/replay patches for 2020-10-06, Peter Maydell, 2020/10/06