Add a client support for using the non-stop protocol to run processes
in all-stop mode. The operations are still done synchronously, so this
does not enable client to asynchronously resume threads or send
additional requests while the process is running.
If plugin.process.gdb-remote.use-non-stop-protocol is set to true prior
to connecting and the server reports support for QNonStop extension,
the client attempts to enable non-stop mode. Using non-stop mode has
the following implications:
- When a continue packet is sent, the client receives the synchronous "OK" notification and blocks until %Stop notification arrives. Then it drains the notification queue.
- When a "?" packet is sent, the client issues "vStopped" command series in order to drain the notification queue.
- When the process is about to be stopped, the client issues a "vCtrlC" command instead of the break sequence.
Sponsored by: The FreeBSD Foundation
I guess this comment needs updating. I've been also thinking whether this is a sufficiently obvious way to send notifications, but I kinda like the brevity of it.