Re: [PATCH] perf tools: Do not show trace command if it's not compiled in

From: Arnaldo Carvalho de Melo
Date: Tue Jan 12 2016 - 09:30:07 EST


Em Tue, Jan 12, 2016 at 12:23:41PM +0100, Ingo Molnar escreveu:
>
> * Jiri Olsa <jolsa@xxxxxxxxxx> wrote:
>
> > The trace command still appears in help message when you
> > run simple 'perf' command.
> >
> > It's because the generate-cmdlist.sh does not care about the
> > HAVE_LIBAUDIT_SUPPORT dependency of trace command and puts
> > it into generated common_cmds array.
> >
> > Wrapping trace command under HAVE_LIBAUDIT_SUPPORT dependency,
> > which will exclude it from common_cmds array if HAVE_LIBAUDIT_SUPPORT
> > is not set.
>
> Btw., would it make sense to still list them, but denote them as '[NOT BUILT IN]':

Yeah, just like we have:

$ make NO_DWARF=1 O=/tmp/build/perf -C tools/perf/ install
make: Entering directory '/home/git/linux/tools/perf'
BUILD: Doing 'make -j4' parallel build
config/Makefile:328: DWARF support is off, BPF prologue is disabled
SUBDIR Documentation
ASCIIDOC /tmp/build/perf/perf-diff.xml
CC /tmp/build/perf/util/abspath.o
<SNIP>

$ perf record -h vm build

Usage: perf record [<options>] [<command>]
or: perf record [<options>] -- <command> [<options>]

-B, --no-buildid do not collect buildids in perf.data
-N, --no-buildid-cache do not update the buildid cache
--vmlinux <file> vmlinux pathname
(not built-in because NO_DWARF=1)

$

> The most commonly used perf commands are:
> annotate Read perf.data (created by perf record) and display annotated code
> archive Create archive with object files with build-ids found in perf.data file
> bench General framework for benchmark suites
> buildid-cache Manage build-id cache.
> buildid-list List the buildids in a perf.data file
> config Get and set variables in a configuration file.
> data Data file related processing
> diff Read perf.data files and display the differential profile
> evlist List the event names in a perf.data file
> inject Filter to augment the events stream with additional information
> kmem Tool to trace/measure kernel memory properties
> kvm Tool to trace/measure kvm guest os
> list List all symbolic event types
> lock Analyze lock events
> mem Profile memory accesses
> record Run a command and record its profile into perf.data
> report Read perf.data (created by perf record) and display the profile
> sched Tool to trace/measure scheduler properties (latencies)
> script Read perf.data (created by perf record) and display trace output
> stat Run a command and gather performance counter statistics
> test Runs sanity tests.
> timechart Tool to visualize total system behavior during a workload
> top System profiling tool.
> probe Define new dynamic tracepoints
> trace [NOT BUILT IN] strace inspired tool
>
> ?
>
> ... and print something informative if someone tries to use it:
>
> triton:~/tip> perf trace
> Error: The 'trace' subcommand is not built into this version of perf.
> Solution: You can enable it by rebuilding perf with all required libraries installed.
>
> Instead of the rather misleading:
>
> triton:~/tip> perf trace
> perf: 'trace' is not a perf-command. See 'perf --help'.
>
> (Plus once we grow a 'perf upgrade' command, we can suggest rebuilding via that
> route.)
>
> Thanks,
>
> Ingo