qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH] trace: Clarify DTrace/SystemTap help message


From: Stefan Hajnoczi
Subject: Re: [Qemu-devel] [PATCH] trace: Clarify DTrace/SystemTap help message
Date: Thu, 15 Aug 2019 15:45:42 +0100
User-agent: Mutt/1.12.1 (2019-06-15)

On Thu, Aug 15, 2019 at 02:02:47PM +0200, Philippe Mathieu-Daudé wrote:
> Most tracing backends are implemented within QEMU, except the
> DTrace/SystemTap backends.
> 
> One side effect is when running 'qemu -trace help', an incomplete
> list of trace events is displayed when using the DTrace/SystemTap
> backends.
> 
> This is partly due to trace events registered as modules with
> trace_init(), and since the events are not used within QEMU,
> the linker optimize and remove the unused modules (which is
> OK in this particular case).
> Currently only the events compiled in trace-root.o and in the
> last trace.o member of libqemuutil.a are linked, resulting in
> an incomplete list of events.
> 
> To avoid confusion, improve the help message, recommending to
> use the proper systemtap script to display the events list.
> 
> Before:
> 
>   $ lm32-softmmu/qemu-system-lm32 -trace help 2>&1 | wc -l
>   70
> 
> After:
> 
>   $ lm32-softmmu/qemu-system-lm32 -trace help
>   Run 'qemu-trace-stap list qemu-system-lm32' to print a list
>   of names of trace points with the DTrace/SystemTap backends.
> 
>   $ qemu-trace-stap list qemu-system-lm32 | wc -l
>   1136
> 
> Signed-off-by: Philippe Mathieu-Daudé <address@hidden>
> ---
>  trace/control.c | 7 +++++++
>  1 file changed, 7 insertions(+)
> 
> diff --git a/trace/control.c b/trace/control.c
> index 43fb7868db..bc2fe0859d 100644
> --- a/trace/control.c
> +++ b/trace/control.c
> @@ -159,12 +159,19 @@ TraceEvent *trace_event_iter_next(TraceEventIter *iter)
>  
>  void trace_list_events(void)
>  {
> +#ifdef CONFIG_TRACE_DTRACE
> +    fprintf(stderr, "Run 'qemu-trace-stap list %s' to print a list\n"
> +                    "of names of trace points with the DTrace/SystemTap"
> +                    " backends.\n",
> +                    error_get_progname());
> +#else
>      TraceEventIter iter;
>      TraceEvent *ev;
>      trace_event_iter_init(&iter, NULL);
>      while ((ev = trace_event_iter_next(&iter)) != NULL) {
>          fprintf(stderr, "%s\n", trace_event_get_name(ev));
>      }
> +#endif

Multiple trace backends can be built into QEMU.  In that case the list
might be complete and the user may not be using stap at all.  Perhaps
the message should be turned into a warning instead and the list should
still be printed:

  This list of trace events may be incompletel.  Run 'qemu-trace-stap
  list %s' to print a list of names of trace events with the
  DTrace/SystemTap backends.

Stefan

Attachment: signature.asc
Description: PGP signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]