Re: Best approach for supporting snapshots for QEMU's gdbstub?
Pavel Dovgalyuk via Gdb <[email protected]>
| Newsgroups | gmane.comp.gdb.devel |
|---|---|
| Message-ID | <4dd935c3-fe40-6ecc-f037-e6eaf7dc7821__48786.8431069487$1621059152$gmane$org@ispras.ru> |
On 14.05.2021 19:06, Alex Bennée wrote: > Hi, > > I've been playing around with QEMU's reverse debugging support which > I have working with Pavel's latest patches for supporting virtio with > record/replay. Once you get the right command line it works well enough > although currently each step backwards requires replaying the entire > execution history until you get to the right point. > > QEMU can quite easily snapshot the entire VM state so I was looking to > see what the best way to integrate this would be. As far as I can tell > there are two interfaces gdb supports: bookmarks and checkpoints. > > As far as I can tell bookmarks where added as part of GDB's reverse > debugging support but attempting to use them from the gdbstub reports: > > (gdb) bookmark > You can't do that when your target is `remote' > > so I guess that would need an extension to the stub protocol to support? > > The other option I found was checkpoints which seem to predate support > for reverse debugging. However: > > (gdb) checkpoint > checkpoint: can't find fork function in inferior. > > I couldn't tell what feature needs to be negotiated but I suspect it's > something like fork-events if the checkpoint mechanism is designed for > user space with a fork/freeze approach. > > We could of course just add a custom monitor command like the > qemu.sstep= command which could be used manually. However that would be > a QEMU gdbstub specific approach. For now you can just use 'monitor savevm sn1' in gdb. But something like 'bookmark' seems more convenient. > The other thing would be to be more intelligent on QEMU's side and save > snapshots each time we hit an event, for example each time we hit a > given breakpoint. However I do worry that might lead to snapshots > growing quite quickly. > > Any thoughts/suggestions? >