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 10/13] gdbstub: add reverse step support in replay mode
Date: Wed, 15 Jul 2020 12:27:40 +0100 [thread overview]
Message-ID: <87d04xxbkj.fsf@linaro.org> (raw)
In-Reply-To: <159316683702.10508.7973844299019522260.stgit@pasha-ThinkPad-X280>
Pavel Dovgalyuk <pavel.dovgalyuk@ispras.ru> writes:
> From: Pavel Dovgalyuk <Pavel.Dovgaluk@ispras.ru>
>
> GDB remote protocol supports two reverse debugging commands:
> reverse step and reverse continue.
> This patch adds support of the first one to the gdbstub.
> Reverse step is intended to step one instruction in the backwards
> direction. This is not possible in regular execution.
> But replayed execution is deterministic, therefore we can load one of
> the prior snapshots and proceed to the desired step. It is equivalent
> to stepping one instruction back.
> There should be at least one snapshot preceding the debugged part of
> the replay log.
>
> Signed-off-by: Pavel Dovgalyuk <Pavel.Dovgalyuk@ispras.ru>
> ---
> 0 files changed
>
> diff --git a/accel/tcg/translator.c b/accel/tcg/translator.c
> index 603d17ff83..fb1e19c585 100644
> --- a/accel/tcg/translator.c
> +++ b/accel/tcg/translator.c
> @@ -17,6 +17,7 @@
> #include "exec/log.h"
> #include "exec/translator.h"
> #include "exec/plugin-gen.h"
> +#include "sysemu/replay.h"
>
> /* Pairs with tcg_clear_temp_count.
> To be called by #TranslatorOps.{translate_insn,tb_stop} if
> diff --git a/cpus.c b/cpus.c
> index 41d1c5099f..35381ea941 100644
> --- a/cpus.c
> +++ b/cpus.c
> @@ -1100,9 +1100,17 @@ static bool cpu_can_run(CPUState *cpu)
>
> static void cpu_handle_guest_debug(CPUState *cpu)
> {
> - gdb_set_stop_cpu(cpu);
> - qemu_system_debug_request();
> - cpu->stopped = true;
> + if (!replay_running_debug()) {
> + gdb_set_stop_cpu(cpu);
> + qemu_system_debug_request();
> + cpu->stopped = true;
> + } else {
> + if (!cpu->singlestep_enabled) {
> + cpu_single_step(cpu, SSTEP_ENABLE);
> + } else {
> + cpu_single_step(cpu, 0);
> + }
> + }
This no longer applies cleanly.
--
Alex Bennée
next prev parent reply other threads:[~2020-07-15 11:28 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-06-26 10:19 [PATCH 00/13] Reverse debugging Pavel Dovgalyuk
2020-06-26 10:19 ` [PATCH 01/13] replay: provide an accessor for rr filename Pavel Dovgalyuk
2020-06-26 10:19 ` [PATCH 02/13] qcow2: introduce icount field for snapshots Pavel Dovgalyuk
2020-07-06 20:17 ` Eric Blake
2020-07-16 6:43 ` Pavel Dovgalyuk
2020-06-26 10:19 ` [PATCH 03/13] migration: " Pavel Dovgalyuk
2020-06-26 10:20 ` [PATCH 04/13] iotests: update snapshot test for new output format Pavel Dovgalyuk
2020-06-26 10:20 ` [PATCH 05/13] qapi: introduce replay.json for record/replay-related stuff Pavel Dovgalyuk
2020-07-15 11:20 ` Alex Bennée
2020-07-16 6:00 ` Pavel Dovgalyuk
2020-06-26 10:20 ` [PATCH 06/13] replay: introduce info hmp/qmp command Pavel Dovgalyuk
2020-06-26 10:20 ` [PATCH 07/13] replay: introduce breakpoint at the specified step Pavel Dovgalyuk
2020-06-26 10:20 ` [PATCH 08/13] replay: implement replay-seek command Pavel Dovgalyuk
2020-06-26 10:20 ` [PATCH 09/13] replay: flush rr queue before loading the vmstate Pavel Dovgalyuk
2020-06-26 10:20 ` [PATCH 10/13] gdbstub: add reverse step support in replay mode Pavel Dovgalyuk
2020-07-15 11:27 ` Alex Bennée [this message]
2020-06-26 10:20 ` [PATCH 11/13] gdbstub: add reverse continue " Pavel Dovgalyuk
2020-06-26 10:20 ` [PATCH 12/13] replay: describe reverse debugging in docs/replay.txt Pavel Dovgalyuk
2020-06-26 10:20 ` [PATCH 13/13] tests/acceptance: add reverse debugging test Pavel Dovgalyuk
2020-07-06 6:02 ` [PATCH 00/13] Reverse debugging Pavel Dovgalyuk
2020-07-06 19:55 ` Alex Bennée
2020-07-07 5:00 ` 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=87d04xxbkj.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.