All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Alex Bennée" <alex.bennee@linaro.org>
To: Pavel Dovgalyuk <pavel.dovgalyuk@ispras.ru>
Cc: kwolf@redhat.com, wrampazz@redhat.com, ehabkost@redhat.com,
	mtosatti@redhat.com, qemu-devel@nongnu.org, armbru@redhat.com,
	stefanha@redhat.com, crosa@redhat.com, pbonzini@redhat.com,
	mreitz@redhat.com, philmd@redhat.com, zhiwei_liu@c-sky.com,
	rth@twiddle.net
Subject: Re: [PATCH v3 13/15] replay: describe reverse debugging in docs/replay.txt
Date: Tue, 08 Sep 2020 12:27:40 +0100	[thread overview]
Message-ID: <87wo14pkyb.fsf@linaro.org> (raw)
In-Reply-To: <159903462227.28509.8201860642659050083.stgit@pasha-ThinkPad-X280>


Pavel Dovgalyuk <pavel.dovgalyuk@ispras.ru> writes:

> 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>
> ---
>  docs/replay.txt |   33 +++++++++++++++++++++++++++++++++
>  1 file changed, 33 insertions(+)

Minor aside - it is probably worth having a separate patch to convert
this file into an .rst and put it in the docs/system folder so we can
properly incorporate it into the user documentation. 

>
> diff --git a/docs/replay.txt b/docs/replay.txt
> index 70c27edb36..18d6169f3b 100644
> --- a/docs/replay.txt
> +++ b/docs/replay.txt
> @@ -294,6 +294,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.

I would explicitly state you need:

  - a block device for storing VM snapshots (independent of storage
    devices you may have)
  - to specify the starting rrsnapshot in both the record and replay runs

Otherwise:

Reviewed-by: Alex Bennée <alex.bennee@linaro.org>

-- 
Alex Bennée


  reply	other threads:[~2020-09-08 11:28 UTC|newest]

Thread overview: 43+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-09-02  8:15 [PATCH v3 00/15] Reverse debugging Pavel Dovgalyuk
2020-09-02  8:15 ` [PATCH v3 01/15] replay: don't record interrupt poll Pavel Dovgalyuk
2020-09-07 10:17   ` Alex Bennée
2020-09-02  8:15 ` [PATCH v3 02/15] replay: provide an accessor for rr filename Pavel Dovgalyuk
2020-09-02  8:16 ` [PATCH v3 03/15] qcow2: introduce icount field for snapshots Pavel Dovgalyuk
2020-09-02  8:16 ` [PATCH v3 04/15] migration: " Pavel Dovgalyuk
2020-09-02  8:16 ` [PATCH v3 05/15] iotests: update snapshot test for new output format Pavel Dovgalyuk
2020-09-07 15:26   ` Alex Bennée
2020-09-07 15:41     ` Pavel Dovgalyuk
2020-09-07 16:00       ` Alex Bennée
2020-09-07 16:05         ` Pavel Dovgalyuk
2020-09-08 13:10   ` Eric Blake
2020-09-02  8:16 ` [PATCH v3 06/15] qapi: introduce replay.json for record/replay-related stuff Pavel Dovgalyuk
2020-09-02  8:16 ` [PATCH v3 07/15] replay: introduce info hmp/qmp command Pavel Dovgalyuk
2020-09-02  8:16 ` [PATCH v3 08/15] replay: introduce breakpoint at the specified step Pavel Dovgalyuk
2020-09-02  8:16 ` [PATCH v3 09/15] replay: implement replay-seek command Pavel Dovgalyuk
2020-09-07 12:45   ` Alex Bennée
2020-09-07 13:32     ` Pavel Dovgalyuk
2020-09-07 12:58   ` Alex Bennée
2020-09-07 13:27     ` Pavel Dovgalyuk
2020-09-07 14:59       ` Alex Bennée
2020-09-07 15:46         ` Pavel Dovgalyuk
2020-09-07 16:25           ` Alex Bennée
2020-09-08  7:44             ` Pavel Dovgalyuk
2020-09-08  9:13               ` Alex Bennée
2020-09-08 10:57                 ` Pavel Dovgalyuk
2020-09-08 11:10                 ` Alex Bennée
2020-09-08 12:15                   ` Pavel Dovgalyuk
2020-09-08 10:54             ` Pavel Dovgalyuk
2020-09-02  8:16 ` [PATCH v3 10/15] replay: flush rr queue before loading the vmstate Pavel Dovgalyuk
2020-09-07 13:37   ` Alex Bennée
2020-09-02  8:16 ` [PATCH v3 11/15] gdbstub: add reverse step support in replay mode Pavel Dovgalyuk
2020-09-07 16:30   ` Alex Bennée
2020-09-08 11:16   ` Alex Bennée
2020-09-02  8:16 ` [PATCH v3 12/15] gdbstub: add reverse continue " Pavel Dovgalyuk
2020-09-02  8:17 ` [PATCH v3 13/15] replay: describe reverse debugging in docs/replay.txt Pavel Dovgalyuk
2020-09-08 11:27   ` Alex Bennée [this message]
2020-09-08 12:57     ` Pavel Dovgalyuk
2020-09-02  8:17 ` [PATCH v3 14/15] tests: bump avocado version Pavel Dovgalyuk
2020-09-02 17:02   ` Willian Rampazzo
2020-09-04 21:39   ` Cleber Rosa
2020-09-02  8:17 ` [PATCH v3 15/15] tests/acceptance: add reverse debugging test Pavel Dovgalyuk
2020-09-08 13:01   ` Alex Bennée

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=87wo14pkyb.fsf@linaro.org \
    --to=alex.bennee@linaro.org \
    --cc=armbru@redhat.com \
    --cc=crosa@redhat.com \
    --cc=ehabkost@redhat.com \
    --cc=kwolf@redhat.com \
    --cc=mreitz@redhat.com \
    --cc=mtosatti@redhat.com \
    --cc=pavel.dovgalyuk@ispras.ru \
    --cc=pbonzini@redhat.com \
    --cc=philmd@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=rth@twiddle.net \
    --cc=stefanha@redhat.com \
    --cc=wrampazz@redhat.com \
    --cc=zhiwei_liu@c-sky.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.