scripts/gdb: fix 'qemu coroutine' when users selects a non topmost stack frame
commit4cbf8efc5b894f9dd86867d7e3de8e8f190618c4
authorMaxim Levitsky <mlevitsk@redhat.com>
Thu, 17 Dec 2020 15:54:35 +0000 (17 17:54 +0200)
committerPaolo Bonzini <pbonzini@redhat.com>
Tue, 12 Jan 2021 11:38:03 +0000 (12 12:38 +0100)
tree51792dae23a6def2523e0614ac49fe51655bb2af
parentcb7abd8319d19000b57ae6c5c474c2635db054c6
scripts/gdb: fix 'qemu coroutine' when users selects a non topmost stack frame

The code that dumps the stack frame works like that:
* save current registers
* overwrite current registers (including rip/rsp) with coroutine snapshot
  in the jmpbuf
* print backtrace
* restore the saved registers.

If the user has currently selected a non topmost stack frame in gdb,
the above code will still restore the selected frame registers,
but the gdb will then lose the selected frame index, which makes it impossible
to switch back to frame 0, to continue debugging the executable.

Therefore switch temporarily to the topmost frame of the stack
for the above code.

Signed-off-by: Maxim Levitsky <mlevitsk@redhat.com>
Message-Id: <20201217155436.927320-2-mlevitsk@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
scripts/qemugdb/coroutine.py