All of lore.kernel.org
 help / color / mirror / Atom feed
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 v13 18/25] replay: describe reverse debugging in docs/replay.txt
Date: Thu, 21 Feb 2019 14:05:45 +0300	[thread overview]
Message-ID: <155074714587.32129.14080833873419016699.stgit@pasha-VirtualBox> (raw)
In-Reply-To: <155074704329.32129.17530905097298071558.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 2c2c5f6118..8447fdd350 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
 -----------------
 

  parent reply	other threads:[~2019-02-21 11:05 UTC|newest]

Thread overview: 40+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-02-21 11:04 [Qemu-devel] [PATCH v13 00/25] Fixing record/replay and adding reverse debugging Pavel Dovgalyuk
2019-02-21 11:04 ` [Qemu-devel] [PATCH v13 01/25] replay: add missing fix for internal function Pavel Dovgalyuk
2019-02-21 11:04 ` [Qemu-devel] [PATCH v13 02/25] block: implement bdrv_snapshot_goto for blkreplay Pavel Dovgalyuk
2019-02-21 11:04 ` [Qemu-devel] [PATCH v13 03/25] replay: disable default snapshot for record/replay Pavel Dovgalyuk
2019-02-21 11:04 ` [Qemu-devel] [PATCH v13 04/25] replay: update docs for record/replay with block devices Pavel Dovgalyuk
2019-02-21 11:04 ` [Qemu-devel] [PATCH v13 05/25] replay: don't drain/flush bdrv queue while RR is working Pavel Dovgalyuk
2019-02-21 11:04 ` [Qemu-devel] [PATCH v13 06/25] replay: finish record/replay before closing the disks Pavel Dovgalyuk
2019-02-21 11:04 ` [Qemu-devel] [PATCH v13 07/25] qcow2: introduce icount field for snapshots Pavel Dovgalyuk
2019-02-21 11:04 ` [Qemu-devel] [PATCH v13 08/25] migration: " Pavel Dovgalyuk
2019-02-21 11:04 ` [Qemu-devel] [PATCH v13 09/25] replay: provide an accessor for rr filename Pavel Dovgalyuk
2019-02-21 11:05 ` [Qemu-devel] [PATCH v13 10/25] qapi: introduce replay.json for record/replay-related stuff Pavel Dovgalyuk
2019-02-21 11:05 ` [Qemu-devel] [PATCH v13 11/25] replay: introduce info hmp/qmp command Pavel Dovgalyuk
2019-02-21 11:05 ` [Qemu-devel] [PATCH v13 12/25] replay: introduce breakpoint at the specified step Pavel Dovgalyuk
2019-02-21 11:05 ` [Qemu-devel] [PATCH v13 13/25] replay: implement replay-seek command Pavel Dovgalyuk
2019-02-21 11:05 ` [Qemu-devel] [PATCH v13 14/25] replay: refine replay-time module Pavel Dovgalyuk
2019-02-21 11:05 ` [Qemu-devel] [PATCH v13 15/25] replay: flush rr queue before loading the vmstate Pavel Dovgalyuk
2019-02-21 11:05 ` [Qemu-devel] [PATCH v13 16/25] gdbstub: add reverse step support in replay mode Pavel Dovgalyuk
2019-02-21 11:05 ` [Qemu-devel] [PATCH v13 17/25] gdbstub: add reverse continue " Pavel Dovgalyuk
2019-02-21 11:05 ` Pavel Dovgalyuk [this message]
2019-02-21 11:05 ` [Qemu-devel] [PATCH v13 19/25] replay: add BH oneshot event for block layer Pavel Dovgalyuk
2019-03-04 10:33   ` Kevin Wolf
2019-03-04 12:17     ` Pavel Dovgalyuk
2019-03-05  9:52       ` Kevin Wolf
2019-03-05 11:04         ` Pavel Dovgalyuk
2019-03-05 11:12           ` Kevin Wolf
2019-03-06  8:33             ` Pavel Dovgalyuk
2019-03-06  9:09               ` Kevin Wolf
2019-03-06  9:18                 ` Pavel Dovgalyuk
2019-03-06  9:29                   ` Kevin Wolf
2019-03-06  9:37                     ` Pavel Dovgalyuk
2019-03-06 10:33                       ` Kevin Wolf
2019-03-06 10:57                         ` Pavel Dovgalyuk
2019-03-06 14:00                         ` Pavel Dovgalyuk
2019-02-21 11:05 ` [Qemu-devel] [PATCH v13 20/25] replay: init rtc after enabling the replay Pavel Dovgalyuk
2019-02-21 11:06 ` [Qemu-devel] [PATCH v13 21/25] replay: document development rules Pavel Dovgalyuk
2019-02-21 11:06 ` [Qemu-devel] [PATCH v13 22/25] util/qemu-timer: refactor deadline calculation for external timers Pavel Dovgalyuk
2019-02-21 11:06 ` [Qemu-devel] [PATCH v13 23/25] replay: fix replay shutdown Pavel Dovgalyuk
2019-02-21 11:06 ` [Qemu-devel] [PATCH v13 24/25] replay: rename step-related variables and functions Pavel Dovgalyuk
2019-02-21 11:06 ` [Qemu-devel] [PATCH v13 25/25] icount: clean up cpu_can_io before jumping to the next block Pavel Dovgalyuk
2019-03-04  7:46 ` [Qemu-devel] [PATCH v13 00/25] Fixing record/replay and adding reverse debugging Pavel Dovgalyuk

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=155074714587.32129.14080833873419016699.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.