log: add "-d trace:PATTERN"

This is a bit easier to use than "-trace" if you are also enabling
other kinds of logging.  It is also more discoverable for experienced
QEMU users, and accessible from user-mode emulators.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Denis V. Lunev <den@openvz.org>
Acked-by: Christian Borntraeger <borntraeger@de.ibm.com>
Message-id: 1452174932-28657-12-git-send-email-den@openvz.org
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
This commit is contained in:
Paolo Bonzini 2016-01-07 16:55:32 +03:00 committed by Stefan Hajnoczi
parent baf86d6b3c
commit c84ea00dc2
1 changed files with 13 additions and 3 deletions

View File

@ -19,6 +19,7 @@
#include "qemu-common.h" #include "qemu-common.h"
#include "qemu/log.h" #include "qemu/log.h"
#include "trace/control.h"
static char *logfilename; static char *logfilename;
FILE *qemu_logfile; FILE *qemu_logfile;
@ -154,6 +155,11 @@ int qemu_str_to_log_mask(const char *str)
for (item = qemu_log_items; item->mask != 0; item++) { for (item = qemu_log_items; item->mask != 0; item++) {
mask |= item->mask; mask |= item->mask;
} }
#ifdef CONFIG_TRACE_LOG
} else if (strncmp(p, "trace:", 6) == 0 && p + 6 != p1) {
trace_enable_events(p + 6);
mask |= LOG_TRACE;
#endif
} else { } else {
for (item = qemu_log_items; item->mask != 0; item++) { for (item = qemu_log_items; item->mask != 0; item++) {
if (cmp1(p, p1 - p, item->name)) { if (cmp1(p, p1 - p, item->name)) {
@ -161,9 +167,9 @@ int qemu_str_to_log_mask(const char *str)
} }
} }
return 0; return 0;
found:
mask |= item->mask;
} }
found:
mask |= item->mask;
if (*p1 != ',') { if (*p1 != ',') {
break; break;
} }
@ -177,6 +183,10 @@ void qemu_print_log_usage(FILE *f)
const QEMULogItem *item; const QEMULogItem *item;
fprintf(f, "Log items (comma separated):\n"); fprintf(f, "Log items (comma separated):\n");
for (item = qemu_log_items; item->mask != 0; item++) { for (item = qemu_log_items; item->mask != 0; item++) {
fprintf(f, "%-10s %s\n", item->name, item->help); fprintf(f, "%-15s %s\n", item->name, item->help);
} }
#ifdef CONFIG_TRACE_LOG
fprintf(f, "trace:PATTERN enable trace events\n");
fprintf(f, "\nUse \"-d trace:help\" to get a list of trace events.\n\n");
#endif
} }