bpftrace is a general purpose tracing tool and language for Linux. It leverages eBPF to provide powerful, efficient tracing capabilities with minimal overhead. bpftrace uses LLVM as a compiler backend, and libbpf for interacting with the Linux BPF subsystem, including kernel dynamic tracing (kprobes, hardware and software perf events), user-level dynamic tracing (USDT, uprobes), tracepoints (regular, raw), and more. The bpftrace language is inspired by awk, C, and predecessor tracers such as DTrace and SystemTap.
Visit bpftrace.org for tutorials, documentation, and labs!
This respository also contains some canonical tools.
For migrating from older versions, see the migration guide.
Get started with bpftrace in just a few minutes! To build from source, see the development guide. However, you can often install it using your distribution's package manager.
Important
When using a distribution package, be sure to verify bpftrace --version when referencing documentation.
See our contributing guide for details on how to contribute, and our governance document for details on how the project is run.
If you have tools built with bpftrace that you'd like to submit, please contribute to the user-tools repository.
For full build instructions (Nix or distro-native), see the development guide.
bpftrace is built and maintained by a diverse community of contributors, users, and organizations who rely on it for production tracing and debugging.
Get help or get involved:
- π¬ GitHub Discussions - Ask questions
- π Issue Tracker - Report bugs and request features
- π Monthly Office Hours - Open to everyone
- π¬ Discord - Open to everyone (if the link expired, write to #4916)