An eBPF-based profiler for process-lifecycle events.
- Zig 90.2%
- JSON 5.5%
- Bluespec 3.7%
- Shell 0.4%
- C 0.2%
| .flox | chore(flox): add zig-out/bin to PATH | |
| dev-docs | feat: add dev docs, license, readme | |
| quint | chore: add quint wip | |
| src | feat: record remaining sys_exit events | |
| .gitignore | fix: read user mem instead of kernel mem | |
| build.zig | feat: record when observing a clone | |
| build.zig.zon | feat: initial commit | |
| LICENSE | Initial commit | |
| README.md | chore: update readme | |
proctrace
This is a WIP rewrite of a previous iteration of proctrace.
Differences:
- Written in Zig instead of Rust.
- Builds and uses a custom eBPF program rather than parsing the output of a custom
bpftracescript.
About
proctrace is a high level profiler for process lifecycle events such as fork, exec, setpgid, and setsid.
This was created as a debugging tool for work on Flox.
macOS support isn't planned due to a hardware bug that causes macOS to hang if DTrace is run if machine has gone to sleep since boot. See this thread for details.
Progress
This is a work in progress, but here's a list of what's complete and what's planned:
- Build at all
- [BPF] Report syscall entry events
- [BPF] Report syscall exit events
- [BPF] Report diagnostics
- [Userspace] Collect events
- [Userspace] Collect errors and diagnostics
- [Userspace] Construct the process tree
- [Userspace] Report the process tree as JSON
- [Userspace] Report the process tree in Perfetto Protobuf format
If you'd like to pitch in, see the dev docs.
License
Licensed under GPLv3.