mirror of
https://github.com/qemu/qemu.git
synced 2026-02-04 05:35:39 +00:00
monitor: Clean up HMP gdbserver error reporting
HMP command gdbserver used to emit two error messages for certain
errors. For instance, with -M none:
(qemu) gdbserver
gdbstub: meaningless to attach gdb to a machine without any CPU.
Could not open gdbserver on device 'tcp::1234'
The first message is the specific error, and the second one a generic
additional message that feels superfluous to me.
Commit c0e6b8b798 (system: propagate Error to gdbserver_start (and
other device setups)) turned the first message into a warning:
warning: gdbstub: meaningless to attach gdb to a machine without any CPU.
Could not open gdbserver on device 'tcp::1234'
This is arguably worse.
hmp_gdbserver() passes &error_warn to gdbserver_start(), so that
failure gets reported as warning, and then additionally emits the
generic error on failure. This is a misuse of &error_warn.
Instead, receive the error in &err and report it, as usual. With
this, gdbserver reports just the error:
gdbstub: meaningless to attach gdb to a machine without any CPU.
Cc: Alex Bennée <alex.bennee@linaro.org>
Signed-off-by: Markus Armbruster <armbru@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Message-ID: <20250923091000.3180122-2-armbru@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Akihiko Odaki <odaki@rsg.ci.i.u-tokyo.ac.jp>
This commit is contained in:
@@ -55,9 +55,6 @@ void gdb_unregister_coprocessor_all(CPUState *cpu);
|
||||
* system emulation you can use a full chardev spec for your gdbserver
|
||||
* port.
|
||||
*
|
||||
* The error handle should be either &error_fatal (for start-up) or
|
||||
* &error_warn (for QMP/HMP initiated sessions).
|
||||
*
|
||||
* Returns true when server successfully started.
|
||||
*/
|
||||
bool gdbserver_start(const char *port_or_device, Error **errp);
|
||||
|
||||
@@ -280,14 +280,15 @@ void hmp_log(Monitor *mon, const QDict *qdict)
|
||||
|
||||
void hmp_gdbserver(Monitor *mon, const QDict *qdict)
|
||||
{
|
||||
Error *err = NULL;
|
||||
const char *device = qdict_get_try_str(qdict, "device");
|
||||
|
||||
if (!device) {
|
||||
device = "tcp::" DEFAULT_GDBSTUB_PORT;
|
||||
}
|
||||
|
||||
if (!gdbserver_start(device, &error_warn)) {
|
||||
monitor_printf(mon, "Could not open gdbserver on device '%s'\n",
|
||||
device);
|
||||
if (!gdbserver_start(device, &err)) {
|
||||
error_report_err(err);
|
||||
} else if (strcmp(device, "none") == 0) {
|
||||
monitor_printf(mon, "Disabled gdbserver\n");
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user