BPFTRACE(8) BPFTRACE(8) (NAME) bpftrace - eBPF (SYNOPSIS) bpftrace [] FILENAME bpftrace [] -e ' ' FILENAME "-" bpftrace (stdin) . Ctrl-C exit . (maps) ( ). (DESCRIPTION) bpftrace . bpftrace LLVM eBPF libbpf bcc BPF . (EXAMPLES) sleep # bpftrace -e 'kprobe:do_nanosleep { printf("%d sleeping\n", pid); }' sleep sleep 5 # bpftrace -e 'kprobe:do_nanosleep { printf("%d sleeping\n", pid); }' -c 'sleep 5' "sleep" # bpftrace -l '*sleep*' # bpftrace -l -e 'kprobe:do_nanosleep { printf("%d sleeping\n", pid); }' (OPTIONS) -B MODE ( -o). : none . I/O line . . full . -c COMMAND COMMAND . bpftrace 'exit()' . bpftrace SIGTERM . 'USDT' . (race condition) 'USDTs' 'execve' 'ptrace(2)' 'USDT' . bpftrace ( root) . bpftrace . COMMAND PID . PID 'cpid' . /pid == cpid/ . -d STAGE (). << >> (Debug Output) . --debuginfo DIR[:DIR] DIR DWARF. . (:) --debuginfo=/bin/debug:./lib/debug:.. --debuginfo=/bin/debug --debuginfo=./lib/debug . (build ID) CRC32 + . . bpftrace .debug /usr/lib/debug debuginfod . (.dwo .dwp) . --dry-run . . -e PROGRAM PROGRAM (stdin). -f FORMAT . : json text JSON NDJSON JSON Lines JSON . --fmt FILENAME bpftrace FILENAME. -h, --help . -I DIR DIR C. . << >> . --include FILENAME FILENAME include . '#include FILENAME' . . << >> . --info bpftrace. -k BPF 'probe_read_*' (map lookup) . bpftrace : stdin:48-57: WARNING: Failed to probe_read_user_str: Bad address (-14) u:lib.so:"fn(char const*)" { printf("arg0:%s\n", str(arg0));} ~~~~~~~~~ -l [SEARCH|FILENAME] SEARCH . . (wildcard) . '-l kprobe:*file*' 'kprobes' 'file' . . << >> . --no-feature feature,feature,... : uprobe_multi uprobe_multi kprobe_multi kprobe_multi kprobe_session kprobe/kretprobe kprobe session --no-warnings bpftrace. --probe-filter REGEX REGEX . . (BEGIN END) . bpftrace . --traceable-functions FILENAME . bpftrace /sys/kernel/tracing/available_filter_functions ftrace . available_filter_functions : "symbol" "symbol [module]". -o FILENAME bpftrace FILENAME (stdout). ( -c) . (stderr) . -p PID PID . bpftrace . USDT uprobes uretprobes (hardware) (software) profile interval watchpoint . begin/end pid pid . uprobes/uretprobes '*' . -q ( ). --unsafe 'system' ('system("rm -rf")') . . kprobe/kretprobe . bpftrace notrace . --usdt-file-activation usdt . -V, --version bpftrace. -v (verbose). << >> . (Program Options) bpftrace . (--) : # bpftrace -e 'begin { print(($1, $2, getopt("aa", 1), getopt("bb"))); }' p1 -- --aa=20 --bb p2 // (p1, p2, 20, true) is printed # bpftrace myscript.bt -- p1 --aa=20 --bb p2 (p1 p2) (aa 20 bb true ) . = ( 'bb' ). . (THE LANGUAGE) bpftrace . (PROBES) bpftrace BPF . ( kprobe) (:) . . ( myname=kprobe:...) . . (STANDARD LIBRARY) . (CONFIGURATION) (Config Variables) . ( ) BPFTRACE_ stack_mode BPFTRACE_STACK_MODE . (Environment Variables) . BPFTRACE_BTF : None BTF. bpftrace BTF . src/btf.cpp . BPFTRACE_KERNEL_BUILD : /lib/modules/$(uname -r) BPFTRACE_KERNEL_SOURCE (out-of-tree) . BPFTRACE_KERNEL_SOURCE : /lib/modules/$(uname -r) bpftrace . BPFTRACE_VMLINUX : None vmlinux kprobe . bpftrace vmlinux . src/attached_probe.cpp:find_vmlinux() . BPFTRACE_COLOR : auto bpftrace. auto always never . (OPTIONS EXPANDED) (Debug Output) -d STAGE . bpftrace STAGE . ( ) all . . : bpftrace . : +------------+-----------------------------------+ |ast | | | | (AST) | | | | | | | | | (pass). | +------------+-----------------------------------+ |codegen | LLVM IR | | | | | | | | | CodegenLLVM. | +------------+-----------------------------------+ |codegen-opt | LLVM IR | | | | | | | | | BPF | | | | | | . | +------------+-----------------------------------+ |dis | | | | | | | | | | | | | libbpf | | | . | | | | | | | | | (debug) | | | . | +------------+-----------------------------------+ |libbpf | | | | libbpf | | | | | | libbpf bpftrace | | | | | | . | +------------+-----------------------------------+ |verifier | | | | | | | (verifier) | | | BPF. | +------------+-----------------------------------+ |all | | | | | | | . | +------------+-----------------------------------+ (Listing Probes) . -e . # bpftrace -l 'kprobe:*' # bpftrace -l 't:syscalls:*openat* # bpftrace -l 'kprobe:tcp*,trace # bpftrace -l 'k:*socket*,tracepoint:syscalls:*tcp*' # bpftrace -l -e 'tracepoint:xdp:mem_* { exit(); }' # bpftrace -l my_script.bt # bpftrace -lv 'enum cpu_usage_stat' (-v) (args) : # bpftrace -l 'fexit:tcp_reset,tracepoint:syscalls:sys_enter_openat' -v fexit:tcp_reset struct sock * sk struct sk_buff * skb tracepoint:syscalls:sys_enter_openat int __syscall_nr int dfd const char * filename int flags umode_t mode # bpftrace -l 'uprobe:/bin/bash:rl_set_prompt' -v # works only if /bin/bash has DWARF uprobe:/bin/bash:rl_set_prompt const char *prompt # bpftrace -lv 'struct css_task_iter' struct css_task_iter { struct cgroup_subsys *ss; unsigned int flags; struct list_head *cset_pos; struct list_head *cset_head; struct list_head *tcset_pos; struct list_head *tcset_head; struct list_head *task_pos; struct list_head *cur_tasks_head; struct css_set *cur_cset; struct css_set *cur_dcset; struct task_struct *cur_task; struct list_head iters_node; }; (Preprocessor Options) -I bpftrace . . # cat program.bt #include begin { @ = FOO } # bpftrace program.bt definitions.h:1:10: fatal error: 'foo.h' file not found # /tmp/include foo.h # bpftrace -I /tmp/include program.bt Attached 1 probe --include . . include . # bpftrace --include linux/path.h --include linux/dcache.h \ -e 'kprobe:vfs_open { printf("open path: %s\n", str(((struct path *)arg0).dentry.d_name.name)); }' Attached 1 probe open path: .com.google.Chrome.ASsbu2 open path: .com.google.Chrome.gimc10 open path: .com.google.Chrome.R1234s (Verbose Output) -v : # bpftrace -v -e 'tracepoint:syscalls:sys_enter_nanosleep { printf("%s is sleeping.\n", comm); }' AST node count: 7 Attached 1 probe load tracepoint:syscalls:sys_enter_nanosleep, with BTF, with func_infos: Success Program ID: 111 Attaching tracepoint:syscalls:sys_enter_nanosleep iscsid is sleeping. iscsid is sleeping. [...] (TERMINOLOGY) +----------------+-----------------------------------------+ |BPF | | | | | | | (Berkeley Packet | | | Filter): | | | | | | | | | | | | | | | | | | ( | | | tcpdump) | | | . | +----------------+-----------------------------------------+ |BPF map | BPF | | | bpftrace | | | | | | | | | | | | | | | | | | . | +----------------+-----------------------------------------+ |BTF | BPF | | | ( BPF Type | | | Format): | | | | | | | | | | | | | | | | | | BPF | | | | | | . | +----------------+-----------------------------------------+ |dynamic tracing | | | | | | | | | | (dynamic instrumentation) | | | | | | : | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | . | | | | | | | | | | | | | | | | | | | | | | | | bpftrace | | | | | | . | | | | | | | | | | | | | | | API | | | | | | | | | | | | | | | | | | | | | . | +----------------+-----------------------------------------+ |eBPF | | | | BPF | | | ( Enhanced | | | BPF): | | | BPF | | | | | | | | | | | | | | | | | | | | | | | | bpftrace | | | | | | . | | | | | | | | | (sandboxed) | | | BPF | | | . | | | | | | | | | eBPF BPF | | | . | +----------------+-----------------------------------------+ |kprobes | | | | | | | | | | | | | . | +----------------+-----------------------------------------+ |probe | : | | | | | | | | | | | | | | | | | | | | | bpftrace | | | . | +----------------+-----------------------------------------+ |static tracing | : | | | | | | | | | | | | | | | . | | | | | | | | | | | | | | | API | | | | | | . | +----------------+-----------------------------------------+ |tracepoints | | | | | | | | | | . | +----------------+-----------------------------------------+ |uprobes | | | | | | | | | | | | | . | +----------------+-----------------------------------------+ |USDT | | | | | | | (User | | | Statically-Defined Tracing): | | | | | | | | | | | | . | | | USDT | | | | | | . | +----------------+-----------------------------------------+ (PROGRAM FILES) . .bt . sleepers.bt cat: # cat sleepers.bt tracepoint:syscalls:sys_enter_nanosleep { printf("%s is sleeping.\n", comm); } : # bpftrace sleepers.bt Attached 1 probe iscsid is sleeping. iscsid is sleeping. . (#!) bpftrace ( /usr/local/bin ) env ( /usr/bin/env) bpftrace ( bpftrace $PATH ): #!/usr/local/bin/bpftrace tracepoint:syscalls:sys_enter_nanosleep { printf("%s is sleeping.\n", comm); } : # chmod 755 sleepers.bt # ./sleepers.bt Attached 1 probe iscsid is sleeping. iscsid is sleeping. 2026-06-14 BPFTRACE(8)