perf-annotate(1)
================

NAME
----
perf-annotate - Read perf.data (created by perf record) and display annotated code

SYNOPSIS
--------
[verse]
'perf annotate' [-i <file> | --input=file] [symbol_name]

DESCRIPTION
-----------
This command reads the input file and displays an annotated version of the
code. If the object file has debug symbols then the source code will be
displayed alongside assembly code.

If there is no debug info in the object, then annotated assembly is displayed.

OPTIONS
-------
-i::
--input=<file>::
        Input file name. (default: perf.data unless stdin is a fifo)

-d::
--dsos=<dso[,dso...]>::
        Only consider symbols in these dsos.
-s::
--symbol=<symbol>::
        Symbol to annotate.

-f::
--force::
        Don't do ownership validation.

-v::
--verbose::
        Be more verbose. (Show symbol address, etc)

-q::
--quiet::
	Do not show any message.  (Suppress -v)

-n::
--show-nr-samples::
	Show the number of samples for each symbol

-D::
--dump-raw-trace::
        Dump raw trace in ASCII.

-k::
--vmlinux=<file>::
        vmlinux pathname.

--ignore-vmlinux::
	Ignore vmlinux files.

--itrace::
	Options for decoding instruction tracing data. The options are:

include::itrace.txt[]

	To disable decoding entirely, use --no-itrace.

-m::
--modules::
        Load module symbols. WARNING: use only with -k and LIVE kernel.

-l::
--print-line::
        Print matching source lines (may be slow).

-P::
--full-paths::
        Don't shorten the displayed pathnames.

--stdio:: Use the stdio interface.

--stdio2:: Use the stdio2 interface, non-interactive, uses the TUI formatting.

--stdio-color=<mode>::
	'always', 'never' or 'auto', allowing configuring color output
	via the command line, in addition to via "color.ui" .perfconfig.
	Use '--stdio-color always' to generate color even when redirecting
	to a pipe or file. Using just '--stdio-color' is equivalent to
	using 'always'.

--tui:: Use the TUI interface. Use of --tui requires a tty, if one is not
	present, as when piping to other commands, the stdio interface is
	used. This interfaces starts by centering on the line with more
	samples, TAB/UNTAB cycles through the lines with more samples.

--gtk:: Use the GTK interface.

-C::
--cpu=<cpu>:: Only report samples for the list of CPUs provided. Multiple CPUs can
	be provided as a comma-separated list with no space: 0,1. Ranges of
	CPUs are specified with -: 0-2. Default is to report samples on all
	CPUs.

--asm-raw::
	Show raw instruction encoding of assembly instructions.

--show-total-period:: Show a column with the sum of periods.

--source::
	Interleave source code with assembly code. Enabled by default,
	disable with --no-source.

--symfs=<directory>::
        Look for files with symbols relative to this directory.

-M::
--disassembler-style=:: Set disassembler style for objdump.

--objdump=<path>::
        Path to objdump binary.

--prefix=PREFIX::
--prefix-strip=N::
	Remove first N entries from source file path names in executables
	and add PREFIX. This allows to display source code compiled on systems
	with different file system layout.

--skip-missing::
	Skip symbols that cannot be annotated.

--group::
	Show event group information together

--demangle::
	Demangle symbol names to human readable form. It's enabled by default,
	disable with --no-demangle.

--demangle-kernel::
	Demangle kernel symbol names to human readable form (for C++ kernels).

--percent-type::
	Set annotation percent type from following choices:
	  global-period, local-period, global-hits, local-hits

	The local/global keywords set if the percentage is computed
	in the scope of the function (local) or the whole data (global).
	The period/hits keywords set the base the percentage is computed
	on - the samples period or the number of samples (hits).

SEE ALSO
--------
linkperf:perf-record[1], linkperf:perf-report[1]
