summaryrefslogtreecommitdiffstats
path: root/replay
diff options
context:
space:
mode:
authorPavel Dovgalyuk2020-10-03 19:14:01 +0200
committerPaolo Bonzini2020-10-06 08:34:49 +0200
commit56357d80fc713367ace8251d1350a490e204bc3a (patch)
tree4d33beed0a2a1adf413af242f4711d925f517920 /replay
parentreplay: describe reverse debugging in docs/replay.txt (diff)
downloadqemu-56357d80fc713367ace8251d1350a490e204bc3a.tar.gz
qemu-56357d80fc713367ace8251d1350a490e204bc3a.tar.xz
qemu-56357d80fc713367ace8251d1350a490e204bc3a.zip
replay: create temporary snapshot at debugger connection
When record/replay does not uses overlays for storing the snapshots, user is not capable of issuing reverse debugging commands. This patch adds creation of the VM snapshot on the temporary overlay image, when the debugger connects to QEMU. Therefore the execution can be rewind to the moment of the debugger connection while debugging the virtual machine. Signed-off-by: Pavel Dovgalyuk <Pavel.Dovgalyuk@ispras.ru> -- v6: - dropped unused error processing (suggested by Philippe Mathieu-Daudé) Message-Id: <160174524096.12451.11651270339216758643.stgit@pasha-ThinkPad-X280> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'replay')
-rw-r--r--replay/replay-debugging.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/replay/replay-debugging.c b/replay/replay-debugging.c
index 30ca38e5dd..ee9e86daa9 100644
--- a/replay/replay-debugging.c
+++ b/replay/replay-debugging.c
@@ -318,3 +318,17 @@ void replay_breakpoint(void)
assert(replay_mode == REPLAY_MODE_PLAY);
replay_last_breakpoint = replay_get_current_icount();
}
+
+void replay_gdb_attached(void)
+{
+ /*
+ * Create VM snapshot on temporary overlay to allow reverse
+ * debugging even if snapshots were not enabled.
+ */
+ if (replay_mode == REPLAY_MODE_PLAY
+ && !replay_snapshot) {
+ if (save_snapshot("start_debugging", NULL) != 0) {
+ /* Can't create the snapshot. Continue conventional debugging. */
+ }
+ }
+}