perf-probe(1)
=============

NAME
----
perf-probe - Define new dynamic tracepoints

SYNOPSIS
--------
[verse]
'perf probe' [options] --add='PROBE' [...]
or
'perf probe' [options] PROBE
or
'perf probe' [options] --del='[GROUP:]EVENT' [...]
or
'perf probe' --list[=[GROUP:]EVENT]
or
'perf probe' [options] --line='LINE'
or
'perf probe' [options] --vars='PROBEPOINT'
or
'perf probe' [options] --funcs

DESCRIPTION
-----------
This command defines dynamic tracepoint events, by symbol and registers
without debuginfo, or by C expressions (C line numbers, C function names,
and C local variables) with debuginfo.


OPTIONS
-------
-k::
--vmlinux=PATH::
	Specify vmlinux path which has debuginfo (Dwarf binary).

-m::
--module=MODNAME|PATH::
	Specify module name in which perf-probe searches probe points
	or lines. If a path of module file is passed, perf-probe
	treat it as an offline module (this means you can add a probe on
        a module which has not been loaded yet).

-s::
--source=PATH::
	Specify path to kernel source.

-v::
--verbose::
        Be more verbose (show parsed arguments, etc).
	Can not use with -q.

-q::
--quiet::
	Be quiet (do not show any messages including errors).
	Can not use with -v.

-a::
--add=::
	Define a probe event (see PROBE SYNTAX for detail).

-d::
--del=::
	Delete probe events. This accepts glob wildcards('*', '?') and character
	classes(e.g. [a-z], [!A-Z]).

-l::
--list[=[GROUP:]EVENT]::
	List up current probe events. This can also accept filtering patterns of
	event names.
	When this is used with --cache, perf shows all cached probes instead of
	the live probes.

-L::
--line=::
	Show source code lines which can be probed. This needs an argument
	which specifies a range of the source code. (see LINE SYNTAX for detail)

-V::
--vars=::
	Show available local variables at given probe point. The argument
	syntax is same as PROBE SYNTAX, but NO ARGs.

--externs::
	(Only for --vars) Show external defined variables in addition to local
	variables.

--no-inlines::
	(Only for --add) Search only for non-inlined functions. The functions
	which do not have instances are ignored.

-F::
--funcs[=FILTER]::
	Show available functions in given module or kernel. With -x/--exec,
	can also list functions in a user space executable / shared library.
	This also can accept a FILTER rule argument.

--filter=FILTER::
	(Only for --vars and --funcs) Set filter. FILTER is a combination of glob
	pattern, see FILTER PATTERN for detail.
	Default FILTER is "!__k???tab_* & !__crc_*" for --vars, and "!_*"
	for --funcs.
	If several filters are specified, only the last filter is used.

-f::
--force::
	Forcibly add events with existing name.

-n::
--dry-run::
	Dry run. With this option, --add and --del doesn't execute actual
	adding and removal operations.

--cache::
	(With --add) Cache the probes. Any events which successfully added
	are also stored in the cache file.
	(With --list) Show cached probes.
	(With --del) Remove cached probes.

--max-probes=NUM::
	Set the maximum number of probe points for an event. Default is 128.

-x::
--exec=PATH::
	Specify path to the executable or shared library file for user
	space tracing. Can also be used with --funcs option.

--demangle::
	Demangle application symbols. --no-demangle is also available
	for disabling demangling.

--demangle-kernel::
	Demangle kernel symbols. --no-demangle-kernel is also available
	for disabling kernel demangling.

In absence of -m/-x options, perf probe checks if the first argument after
the options is an absolute path name. If its an absolute path, perf probe
uses it as a target module/target user space binary to probe.

PROBE SYNTAX
------------
Probe points are defined by following syntax.

    1) Define event based on function name
     [[GROUP:]EVENT=]FUNC[@SRC][:RLN|+OFFS|%return|;PTN] [ARG ...]

    2) Define event based on source file with line number
     [[GROUP:]EVENT=]SRC:ALN [ARG ...]

    3) Define event based on source file with lazy pattern
     [[GROUP:]EVENT=]SRC;PTN [ARG ...]

    4) Pre-defined SDT events or cached event with name
     %[sdt_PROVIDER:]SDTEVENT
     or,
     sdt_PROVIDER:SDTEVENT

'EVENT' specifies the name of new event, if omitted, it will be set the name of the probed function. You can also specify a group name by 'GROUP', if omitted, set 'probe' is used for kprobe and 'probe_<bin>' is used for uprobe.
Note that using existing group name can conflict with other events. Especially, using the group name reserved for kernel modules can hide embedded events in the
modules.
'FUNC' specifies a probed function name, and it may have one of the following options; '+OFFS' is the offset from function entry address in bytes, ':RLN' is the relative-line number from function entry line, and '%return' means that it probes function return. And ';PTN' means lazy matching pattern (see LAZY MATCHING). Note that ';PTN' must be the end of the probe point definition.  In addition, '@SRC' specifies a source file which has that function.
It is also possible to specify a probe point by the source line number or lazy matching by using 'SRC:ALN' or 'SRC;PTN' syntax, where 'SRC' is the source file path, ':ALN' is the line number and ';PTN' is the lazy matching pattern.
'ARG' specifies the arguments of this probe point, (see PROBE ARGUMENT).
'SDTEVENT' and 'PROVIDER' is the pre-defined event name which is defined by user SDT (Statically Defined Tracing) or the pre-cached probes with event name.
Note that before using the SDT event, the target binary (on which SDT events are defined) must be scanned by linkperf:perf-buildid-cache[1] to make SDT events as cached events.

For details of the SDT, see below.
https://sourceware.org/gdb/onlinedocs/gdb/Static-Probe-Points.html

PROBE ARGUMENT
--------------
Each probe argument follows below syntax.

 [NAME=]LOCALVAR|$retval|%REG|@SYMBOL[:TYPE]

'NAME' specifies the name of this argument (optional). You can use the name of local variable, local data structure member (e.g. var->field, var.field2), local array with fixed index (e.g. array[1], var->array[0], var->pointer[2]), or kprobe-tracer argument format (e.g. $retval, %ax, etc). Note that the name of this argument will be set as the last member name if you specify a local data structure member (e.g. field2 for 'var->field1.field2'.)
'$vars' and '$params' special arguments are also available for NAME, '$vars' is expanded to the local variables (including function parameters) which can access at given probe point. '$params' is expanded to only the function parameters.
'TYPE' casts the type of this argument (optional). If omitted, perf probe automatically set the type based on debuginfo. Currently, basic types (u8/u16/u32/u64/s8/s16/s32/s64), signedness casting (u/s), "string" and bitfield are supported. (see TYPES for detail)

On x86 systems %REG is always the short form of the register: for example %AX. %RAX or %EAX is not valid.

TYPES
-----
Basic types (u8/u16/u32/u64/s8/s16/s32/s64) are integer types. Prefix 's' and 'u' means those types are signed and unsigned respectively. Traced arguments are shown in decimal (signed) or hex (unsigned). You can also use 's' or 'u' to specify only signedness and leave its size auto-detected by perf probe.
String type is a special type, which fetches a "null-terminated" string from kernel space. This means it will fail and store NULL if the string container has been paged out. You can specify 'string' type only for the local variable or structure member which is an array of or a pointer to 'char' or 'unsigned char' type.
Bitfield is another special type, which takes 3 parameters, bit-width, bit-offset, and container-size (usually 32). The syntax is;

 b<bit-width>@<bit-offset>/<container-size>

LINE SYNTAX
-----------
Line range is described by following syntax.

 "FUNC[@SRC][:RLN[+NUM|-RLN2]]|SRC[:ALN[+NUM|-ALN2]]"

FUNC specifies the function name of showing lines. 'RLN' is the start line
number from function entry line, and 'RLN2' is the end line number. As same as
probe syntax, 'SRC' means the source file path, 'ALN' is start line number,
and 'ALN2' is end line number in the file. It is also possible to specify how
many lines to show by using 'NUM'. Moreover, 'FUNC@SRC' combination is good
for searching a specific function when several functions share same name.
So, "source.c:100-120" shows lines between 100th to l20th in source.c file. And "func:10+20" shows 20 lines from 10th line of func function.

LAZY MATCHING
-------------
 The lazy line matching is similar to glob matching but ignoring spaces in both of pattern and target. So this accepts wildcards('*', '?') and character classes(e.g. [a-z], [!A-Z]).

e.g.
 'a=*' can matches 'a=b', 'a = b', 'a == b' and so on.

This provides some sort of flexibility and robustness to probe point definitions against minor code changes. For example, actual 10th line of schedule() can be moved easily by modifying schedule(), but the same line matching 'rq=cpu_rq*' may still exist in the function.)

FILTER PATTERN
--------------
 The filter pattern is a glob matching pattern(s) to filter variables.
 In addition, you can use "!" for specifying filter-out rule. You also can give several rules combined with "&" or "|", and fold those rules as one rule by using "(" ")".

e.g.
 With --filter "foo* | bar*", perf probe -V shows variables which start with "foo" or "bar".
 With --filter "!foo* & *bar", perf probe -V shows variables which don't start with "foo" and end with "bar", like "fizzbar". But "foobar" is filtered out.

EXAMPLES
--------
Display which lines in schedule() can be probed:

 ./perf probe --line schedule

Add a probe on schedule() function 12th line with recording cpu local variable:

 ./perf probe schedule:12 cpu
 or
 ./perf probe --add='schedule:12 cpu'

 this will add one or more probes which has the name start with "schedule".

 Add probes on lines in schedule() function which calls update_rq_clock().

 ./perf probe 'schedule;update_rq_clock*'
 or
 ./perf probe --add='schedule;update_rq_clock*'

Delete all probes on schedule().

 ./perf probe --del='schedule*'

Add probes at zfree() function on /bin/zsh

 ./perf probe -x /bin/zsh zfree or ./perf probe /bin/zsh zfree

Add probes at malloc() function on libc

 ./perf probe -x /lib/libc.so.6 malloc or ./perf probe /lib/libc.so.6 malloc

SEE ALSO
--------
linkperf:perf-trace[1], linkperf:perf-record[1], linkperf:perf-buildid-cache[1]
