From: Pavel Dovgalyuk <Pavel.Dovgaluk@ispras.ru>
To: qemu-devel@nongnu.org
Cc: kwolf@redhat.com, peter.maydell@linaro.org, war2jordan@live.com,
crosthwaite.peter@gmail.com, boost.lists@gmail.com,
artem.k.pisarenko@gmail.com, quintela@redhat.com,
ciro.santilli@gmail.com, jasowang@redhat.com, mst@redhat.com,
armbru@redhat.com, mreitz@redhat.com,
maria.klimushenkova@ispras.ru, dovgaluk@ispras.ru,
kraxel@redhat.com, pavel.dovgaluk@ispras.ru,
thomas.dullien@googlemail.com, pbonzini@redhat.com,
alex.bennee@linaro.org, dgilbert@redhat.com, rth@twiddle.net
Subject: [Qemu-devel] [PATCH v10 18/24] replay: describe reverse debugging in docs/replay.txt
Date: Thu, 17 Jan 2019 10:38:33 +0300 [thread overview]
Message-ID: <20190117073833.5399.68807.stgit@pasha-VirtualBox> (raw)
In-Reply-To: <20190117073649.5399.97670.stgit@pasha-VirtualBox>
This patch updates the documentation and describes usage of the reverse
debugging in QEMU+GDB.
Signed-off-by: Pavel Dovgalyuk <Pavel.Dovgaluk@ispras.ru>
---
docs/replay.txt | 33 +++++++++++++++++++++++++++++++++
1 file changed, 33 insertions(+)
diff --git a/docs/replay.txt b/docs/replay.txt
index 2c2c5f6..8447fdd 100644
--- a/docs/replay.txt
+++ b/docs/replay.txt
@@ -293,6 +293,39 @@ 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. See the "Snapshotting" section to learn about running
+record/replay and creating the snapshot in these modes.
+
Replay log format
-----------------
next prev parent reply other threads:[~2019-01-17 7:38 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-01-17 7:36 [Qemu-devel] [PATCH v10 00/24] Fixing record/replay and adding reverse debugging Pavel Dovgalyuk
2019-01-17 7:36 ` [Qemu-devel] [PATCH v10 01/24] replay: add missing fix for internal function Pavel Dovgalyuk
2019-01-17 7:37 ` [Qemu-devel] [PATCH v10 02/24] block: implement bdrv_snapshot_goto for blkreplay Pavel Dovgalyuk
2019-01-17 7:37 ` [Qemu-devel] [PATCH v10 03/24] replay: disable default snapshot for record/replay Pavel Dovgalyuk
2019-01-17 7:37 ` [Qemu-devel] [PATCH v10 04/24] replay: update docs for record/replay with block devices Pavel Dovgalyuk
2019-01-17 7:37 ` [Qemu-devel] [PATCH v10 05/24] replay: don't drain/flush bdrv queue while RR is working Pavel Dovgalyuk
2019-01-17 7:37 ` [Qemu-devel] [PATCH v10 06/24] replay: finish record/replay before closing the disks Pavel Dovgalyuk
2019-01-17 7:37 ` [Qemu-devel] [PATCH v10 07/24] qcow2: introduce icount field for snapshots Pavel Dovgalyuk
2019-01-17 7:37 ` [Qemu-devel] [PATCH v10 08/24] migration: " Pavel Dovgalyuk
2019-01-17 12:45 ` Markus Armbruster
2019-01-17 7:37 ` [Qemu-devel] [PATCH v10 09/24] replay: provide an accessor for rr filename Pavel Dovgalyuk
2019-01-17 7:37 ` [Qemu-devel] [PATCH v10 10/24] qapi: introduce replay.json for record/replay-related stuff Pavel Dovgalyuk
2019-01-17 12:48 ` Markus Armbruster
2019-01-17 7:37 ` [Qemu-devel] [PATCH v10 11/24] replay: introduce info hmp/qmp command Pavel Dovgalyuk
2019-01-17 13:20 ` Markus Armbruster
2019-01-17 7:37 ` [Qemu-devel] [PATCH v10 12/24] replay: introduce breakpoint at the specified step Pavel Dovgalyuk
2019-01-17 13:24 ` Markus Armbruster
2019-01-18 5:34 ` Pavel Dovgalyuk
2019-01-17 7:38 ` [Qemu-devel] [PATCH v10 13/24] replay: implement replay-seek command Pavel Dovgalyuk
2019-01-17 13:30 ` Markus Armbruster
2019-01-17 7:38 ` [Qemu-devel] [PATCH v10 14/24] replay: refine replay-time module Pavel Dovgalyuk
2019-01-17 7:38 ` [Qemu-devel] [PATCH v10 15/24] replay: flush rr queue before loading the vmstate Pavel Dovgalyuk
2019-01-17 7:38 ` [Qemu-devel] [PATCH v10 16/24] gdbstub: add reverse step support in replay mode Pavel Dovgalyuk
2019-01-17 7:38 ` [Qemu-devel] [PATCH v10 17/24] gdbstub: add reverse continue " Pavel Dovgalyuk
2019-01-17 7:38 ` Pavel Dovgalyuk [this message]
2019-01-17 7:38 ` [Qemu-devel] [PATCH v10 19/24] replay: add BH oneshot event for block layer Pavel Dovgalyuk
2019-01-17 7:38 ` [Qemu-devel] [PATCH v10 20/24] replay: init rtc after enabling the replay Pavel Dovgalyuk
2019-01-17 7:38 ` [Qemu-devel] [PATCH v10 21/24] replay: document development rules Pavel Dovgalyuk
2019-01-17 7:38 ` [Qemu-devel] [PATCH v10 22/24] util/qemu-timer: refactor deadline calculation for external timers Pavel Dovgalyuk
2019-01-17 7:39 ` [Qemu-devel] [PATCH v10 23/24] replay: fix replay shutdown Pavel Dovgalyuk
2019-01-17 7:39 ` [Qemu-devel] [PATCH v10 24/24] replay: rename step-related variables and functions Pavel Dovgalyuk
2019-01-31 18:15 ` [Qemu-devel] [PATCH v10 00/24] Fixing record/replay and adding reverse debugging no-reply
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20190117073833.5399.68807.stgit@pasha-VirtualBox \
--to=pavel.dovgaluk@ispras.ru \
--cc=alex.bennee@linaro.org \
--cc=armbru@redhat.com \
--cc=artem.k.pisarenko@gmail.com \
--cc=boost.lists@gmail.com \
--cc=ciro.santilli@gmail.com \
--cc=crosthwaite.peter@gmail.com \
--cc=dgilbert@redhat.com \
--cc=dovgaluk@ispras.ru \
--cc=jasowang@redhat.com \
--cc=kraxel@redhat.com \
--cc=kwolf@redhat.com \
--cc=maria.klimushenkova@ispras.ru \
--cc=mreitz@redhat.com \
--cc=mst@redhat.com \
--cc=pbonzini@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=quintela@redhat.com \
--cc=rth@twiddle.net \
--cc=thomas.dullien@googlemail.com \
--cc=war2jordan@live.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).