From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:59568) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Uf6T7-0007a5-Bv for qemu-devel@nongnu.org; Wed, 22 May 2013 06:40:34 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Uf6T2-0002HH-SY for qemu-devel@nongnu.org; Wed, 22 May 2013 06:40:29 -0400 Received: from mail-ee0-f45.google.com ([74.125.83.45]:51614) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Uf6T2-0002H9-MR for qemu-devel@nongnu.org; Wed, 22 May 2013 06:40:24 -0400 Received: by mail-ee0-f45.google.com with SMTP id l10so1014227eei.18 for ; Wed, 22 May 2013 03:40:23 -0700 (PDT) Received: from localhost (h59ec325f.selukar.dyn.perspektivbredband.net. [89.236.50.95]) by mx.google.com with ESMTPSA id c42sm9253802eeb.10.2013.05.22.03.40.20 for (version=TLSv1.2 cipher=RC4-SHA bits=128/128); Wed, 22 May 2013 03:40:20 -0700 (PDT) From: edgar.iglesias@gmail.com Date: Wed, 22 May 2013 12:38:25 +0200 Message-Id: <1369219105-9111-3-git-send-email-edgar.iglesias@gmail.com> In-Reply-To: <1369219105-9111-1-git-send-email-edgar.iglesias@gmail.com> References: <1369219105-9111-1-git-send-email-edgar.iglesias@gmail.com> Subject: [Qemu-devel] [RFC 2/2] qemu-log: Interrupt the GDB session on guest-errors List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org From: "Edgar E. Iglesias" Signed-off-by: Edgar E. Iglesias --- qemu-log.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/qemu-log.c b/qemu-log.c index 797f2af..693bc94 100644 --- a/qemu-log.c +++ b/qemu-log.c @@ -19,6 +19,7 @@ #include "qemu-common.h" #include "qemu/log.h" +#include "exec/gdbstub.h" static char *logfilename; FILE *qemu_logfile; @@ -45,6 +46,25 @@ void qemu_log_mask(int mask, const char *fmt, ...) vfprintf(qemu_logfile, fmt, ap); } va_end(ap); + + /* + * Break the GDB session (if connected) so that the user can inspect the + * guest state. + * + * TODO: Consider conditionalizing this on a cmdline option. + */ + if (mask & LOG_GUEST_ERROR) { + char *msg; + + va_start(ap, fmt); + if (vasprintf(&msg, fmt, ap) < 0) { + msg = NULL; + } + va_end(ap); + + gdbserver_break(msg); + g_free(msg); + } } /* enable or disable low levels log */ -- 1.7.10.4