New Features
Now it's possible to export detailed trace to perfetto trace format!
The trace can be collected with tracexec collect --format perfetto
and viewed in https://ui.perfetto.dev/ as demonstrated in the following video:
tracexec-pftrace.webm
This feature enables interesting new use cases such as build system profiling
and examining the detailed exec traces in tree format using perfetto UI.
Improvements
- eBPF backend: use
BPF_RB_FORCE_WAKEUPfor event delivery. - Perf: use
internmentcrate for much faster string interning.
Bug Fixes
- Ptrace backend: use timestamp produced at a single location.
- Ptrace backend: fix parent tracking for exec failure events.
- TUI: fix "Prev Match" command.
- Collect command now handles SIGINT and SIGTERM gracefully.
- eBPF backend: don't write skel to src dir in build script
- eBPF backend: fix data race with per-cpu data structures.
- Ptrace backend: fix interpreter path extraction for files smaller than 2 bytes.
Build Related Changes
- tracexec is now split into multiple crates (
tracexec-core,tracexec-backend-ptrace,tracexec-backend-ebpf,tracexec-exporter-json,tracexec-exporter-perfetto,tracexec-tuiand optionallyperfetto-trace-proto) for better modularity and faster compilation. - A new feature
protobuf-binding-from-sourceis added for building protobuf bindings to the perfetto trace format.
By default, this feature is disabled and tracexec uses a vendored and hand-minified protobuf binding to perfetto to speed up compilation and avoidprotocbuild dependency.
See INSTALL.md for more details.
Internal Changes
- Obsolete directories (
casts,screenshots,3rdparty) are removed from git repo. - Update dependencies. Notably ratatui is updated to 0.30 and lru is bumped for an unsoundness fix.
- Update and refactor UKCI.
- Add CodeRabbit configuration for AI powered code review.
- Remove whitesource bolt bot from CI.
- Track test coverage with Codecov and cargo-llvm-cov in CI.
- Check code style in CI with rustfmt.
- Explicitly specify Github Actions workflow permissions