trace: make the 'log' backend timestamp configurable

Timestamps in tracing output can be distracting. Make it possible to
control tid/timestamp printing with -msg timestamp=on|off. The default
is no tid/timestamps. Previously they were always printed.

Suggested-by: BALATON Zoltan <balaton@eik.bme.hu>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Tested-by: BALATON Zoltan <balaton@eik.bme.hu>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Message-id: 20210125113507.224287-3-stefanha@redhat.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
This commit is contained in:
Stefan Hajnoczi 2021-01-25 11:35:07 +00:00
parent 651d588f03
commit 418ed14268
2 changed files with 16 additions and 6 deletions

View file

@ -224,6 +224,9 @@ effectively turns trace events into debug printfs.
This is the simplest backend and can be used together with existing code that This is the simplest backend and can be used together with existing code that
uses DPRINTF(). uses DPRINTF().
The -msg timestamp=on|off command-line option controls whether or not to print
the tid/timestamp prefix for each trace event.
Simpletrace Simpletrace
----------- -----------

View file

@ -20,6 +20,7 @@ PUBLIC = True
def generate_h_begin(events, group): def generate_h_begin(events, group):
out('#include "qemu/log-for-trace.h"', out('#include "qemu/log-for-trace.h"',
'#include "qemu/error-report.h"',
'') '')
@ -35,14 +36,20 @@ def generate_h(event, group):
cond = "trace_event_get_state(%s)" % ("TRACE_" + event.name.upper()) cond = "trace_event_get_state(%s)" % ("TRACE_" + event.name.upper())
out(' if (%(cond)s && qemu_loglevel_mask(LOG_TRACE)) {', out(' if (%(cond)s && qemu_loglevel_mask(LOG_TRACE)) {',
' struct timeval _now;', ' if (message_with_timestamp) {',
' gettimeofday(&_now, NULL);', ' struct timeval _now;',
' gettimeofday(&_now, NULL);',
'#line %(event_lineno)d "%(event_filename)s"', '#line %(event_lineno)d "%(event_filename)s"',
' qemu_log("%%d@%%zu.%%06zu:%(name)s " %(fmt)s "\\n",', ' qemu_log("%%d@%%zu.%%06zu:%(name)s " %(fmt)s "\\n",',
' qemu_get_thread_id(),', ' qemu_get_thread_id(),',
' (size_t)_now.tv_sec, (size_t)_now.tv_usec', ' (size_t)_now.tv_sec, (size_t)_now.tv_usec',
' %(argnames)s);', ' %(argnames)s);',
'#line %(out_next_lineno)d "%(out_filename)s"', '#line %(out_next_lineno)d "%(out_filename)s"',
' } else {',
'#line %(event_lineno)d "%(event_filename)s"',
' qemu_log("%(name)s " %(fmt)s "\\n"%(argnames)s);',
'#line %(out_next_lineno)d "%(out_filename)s"',
' }',
' }', ' }',
cond=cond, cond=cond,
event_lineno=event.lineno, event_lineno=event.lineno,