@c The contents of this file must be kept in sync with qemu-option-trace.rst.inc
@c until all the users of the texi file have been converted to rst and
@c the texi file can be removed.

Specify tracing options.

@table @option
@item [enable=]@var{pattern}
Immediately enable events matching @var{pattern}
(either event name or a globbing pattern).  This option is only
available if QEMU has been compiled with the @var{simple}, @var{log}
or @var{ftrace} tracing backend.  To specify multiple events or patterns,
specify the @option{-trace} option multiple times.

Use @code{-trace help} to print a list of names of trace points.

@item events=@var{file}
Immediately enable events listed in @var{file}.
The file must contain one event name (as listed in the @file{trace-events-all}
file) per line; globbing patterns are accepted too.  This option is only
available if QEMU has been compiled with the @var{simple}, @var{log} or
@var{ftrace} tracing backend.

@item file=@var{file}
Log output traces to @var{file}.
This option is only available if QEMU has been compiled with
the @var{simple} tracing backend.
@end table
