https://github.com/sandstorm791/flextrace
an ebpf application profiling toolkit
https://github.com/sandstorm791/flextrace
ebpf linux rust
Last synced: 2 months ago
JSON representation
an ebpf application profiling toolkit
- Host: GitHub
- URL: https://github.com/sandstorm791/flextrace
- Owner: sandstorm791
- License: gpl-2.0
- Created: 2025-11-29T03:57:08.000Z (7 months ago)
- Default Branch: main
- Last Pushed: 2025-12-27T21:47:46.000Z (6 months ago)
- Last Synced: 2025-12-28T14:14:22.388Z (6 months ago)
- Topics: ebpf, linux, rust
- Language: Rust
- Homepage:
- Size: 101 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# flextrace
flextrace is an ebpf-powered application profiling toolkit for linux
(minimum kernel version is something pretty modern cause this uses aya mainline until next version is actually released and it has weird verifier issues on older kernels)
#### roadmap:
✅ ability to do basic perf event data gathering based on various hardware and software events, including info about
what process triggered it, mostly helpful for big picture info
✅ have a decent command line (will expand it for future features of course)
✅ ability to unwind stack traces using frame pointers (easy)
✅️ clean up the codebase so it can be used as a library
- ability to unwind stack traces using .eh_frame (pain)
- have nice data analytics features
- gui frontend
currently only supports amd64 system v abi but hopefully others soon
nothing is production yet lol but hopefully it will be some time
## Prerequisites
1. stable rust toolchains: `rustup toolchain install stable`
1. nightly rust toolchains: `rustup toolchain install nightly --component rust-src`
1. (if cross-compiling) rustup target: `rustup target add ${ARCH}-unknown-linux-musl`
1. (if cross-compiling) LLVM: (e.g.) `brew install llvm` (on macOS)
1. (if cross-compiling) C toolchain: (e.g.) [`brew install filosottile/musl-cross/musl-cross`](https://github.com/FiloSottile/homebrew-musl-cross) (on macOS)
1. bpf-linker: `cargo install bpf-linker` (`--no-default-features` on macOS)
## Build & Run
Use `cargo build`, `cargo check`, etc. as normal. Run your program with:
```shell
cargo run --release --config 'target."cfg(all())".runner="sudo -E"'
```
Cargo build scripts are used to automatically build the eBPF correctly and include it in the
program.
## Cross-compiling on macOS
Cross compilation should work on both Intel and Apple Silicon Macs.
```shell
CC=${ARCH}-linux-musl-gcc cargo build --package flextrace --release \
--target=${ARCH}-unknown-linux-musl \
--config=target.${ARCH}-unknown-linux-musl.linker=\"${ARCH}-linux-musl-gcc\"
```
The cross-compiled program `target/${ARCH}-unknown-linux-musl/release/flextrace` can be
copied to a Linux server or VM and run there.