PERF-PROBE(1) perf Manual PERF-PROBE(1) (NAME) perf-probe - (SYNOPSIS) perf probe [options] --add=PROBE [...] perf probe [options] PROBE perf probe [options] --del=[GROUP:]EVENT [...] perf probe --list[=[GROUP:]EVENT] perf probe [options] --line=LINE perf probe [options] --vars=PROBEPOINT perf probe [options] --funcs perf probe [options] --definition=PROBE [...] (DESCRIPTION) (dynamic tracepoint events) C ( C C C) (debuginfo) . (OPTIONS) -k, --vmlinux=PATH vmlinux ( Dwarf). --definition vmlinux . -m, --module=MODNAME|PATH perf-probe . perf-probe ( ). -s, --source=PATH . --symfs= . (layout) hierarchy ( ) flat ( ) . . -v, --verbose ( ). -q . -q, --quiet . -v . -a, --add= ( (PROBE SYNTAX) ). -d, --del= . (* ?) ( [a-z] [!A-Z]) . -l, --list[=[GROUP:]EVENT] . . --cache perf . -L, --line= . ( (LINE SYNTAX) ). -V, --vars= . PROBE SYNTAX (NO ARGs). --externs ( --vars) . --no-inlines ( --add) (non-inlined). (instance) . -F, --funcs[=FILTER] . -x/--exec . (FILTER) . -D, --definition= trace-event probe-event tracing/[k,u]probe_events. --filter=FILTER ( --vars --funcs) . glob (FILTER PATTERN) . --vars "!k???tab_* & !crc_*" --funcs "!_*" . . -f, --force . -n, --dry-run . --add --del . --cache ( --add) . . ( --list) . ( --del) . --max-probes=NUM . . --target-ns=PID: mount pid . uprobe mount perf(1) . -x, --exec=PATH . --funcs . --demangle () . --no-demangle . --demangle-kernel . --no-demangle-kernel . -m/-x perf probe . perf probe . (PROBE 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 (return probes) "__return" . GROUP probe kprobe probe_ uprobe . . . FUNC : +OFFS :RLN %return . ;PTN (lazy matching pattern) ( (LAZY MATCHING) ). ;PTN . @SRC . SRC:ALN SRC;PTN SRC :ALN ;PTN . ARG ( (PROBE ARGUMENT) ). SDTEVENT PROVIDER SDT (Statically Defined Tracing) . SDT ( SDT ) perf-buildid-cache(1) SDT . SDT : https://sourceware.org/gdb/onlinedocs/gdb/Static-Probe-Points.html (ESCAPED CHARACTERS) = @ + : ; . (\) . ( @GLIBC_...) . (\\) ('AAA\@BBB') . (EXAMPLES) . (PROBE ARGUMENT) : [NAME=]LOCALVAR|$retval|%REG|@SYMBOL[:TYPE][@user] NAME (). ( var->field var.field2) ( array[1] var->array[0] var->pointer[2]) kprobe-tracer ( $retval %ax ) . ( field2 var->field1.field2). $vars $params NAME $vars ( ) . $params . TYPE (). perf probe (*) . (u8/u16/u32/u64/s8/s16/s32/s64) (x/x8/x16/x32/x64) (u/s) ("string") (bitfield) ( (TYPES) ). x86 %REG : %AX %RAX %EAX . "@user" LOCALVAR . kprobe . (TYPES) (u8/u16/u32/u64/s8/s16/s32/s64) (x8/x16/x32/x64) . s u (signed) (unsigned) x . (sNN/uNN) (xNN) . s u perf probe . x ( ). (string) ("null-terminated") . (paged out) NULL . string char unsigned char . (Bitfield) : (bit-width) (bit-offset) (container-size ). : b@/ (LINE SYNTAX) : "FUNC[@SRC][:RLN[+NUM|-RLN2]]|SRC[:ALN[+NUM|-ALN2]]" FUNC . RLN RLN2 . SRC ALN ALN2 . NUM . FUNC@SRC . "source.c:100-120" source.c "func:10+20" func . (LAZY MATCHING) glob . (* ?) ( [a-z] [!A-Z]) . a=* a=b a = b a == b . . schedule() schedule() rq=cpu_rq* . (FILTER PATTERN) ( ) glob . "!" (filter-out) . "&" "|" "(" ")" . --filter "foo* | bar*" perf probe -V "foo" "bar" . --filter "!foo* & *bar" perf probe -V "foo" "bar" ( "fizzbar") "foobar" . (EXAMPLES) ()schedule : ./perf probe --line schedule ()schedule cpu: ./perf probe schedule:12 cpu ./perf probe --add='schedule:12 cpu' "schedule" : ./perf probe schedule* ./perf probe --add='schedule*' ()schedule ()update_rq_clock : ./perf probe 'schedule;update_rq_clock*' ./perf probe --add='schedule;update_rq_clock*' ()schedule: ./perf probe --del='schedule*' ()zfree bin/zsh/: ./perf probe -x /bin/zsh zfree ./perf probe /bin/zsh zfree ()malloc libc: ./perf probe -x /lib/libc.so.6 malloc ./perf probe /lib/libc.so.6 malloc uprobe mount : ./perf probe --target-ns -x /lib64/libc.so.6 malloc USDT mount : ./perf probe --target-ns -x /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.121-0.b13.el7_3.x86_64/jre/lib/amd64/server/libjvm.so %sdt_hotspot:thread__sleep__end : ./perf probe -x /lib64/libc-2.25.so 'malloc_get_state\@GLIBC_2.2.5' : ./perf probe -x /opt/test/a.out 'foo\+bar.c:4' (PERMISSIONS AND SYSCTL) perf probe ftrace ( tracefs) kallsyms ( proc/kallsyms/) sysctl . o tracefs kallsyms (root) perf probe : --add --del --list ( --cache). o tracefs (sudo mount -o remount,mode=755 /sys/kernel/tracing/) perf probe --list . o proc/sys/kernel/kptr_restrict = 2/ ( ) kallsyms perf probe . ( CAP_SYSLOG) . kallsyms (kprobes) . o perf probe vmlinux ( ) debuginfo ( ) . (SEE ALSO) perf-trace(1), perf-record(1), perf-buildid-cache(1) perf 09/04/2026 PERF-PROBE(1)