tra86 is a Rust desktop assembly tracer/debugger experiment. It is still currently under development. More coming soon.
What is verified right now:
cargo checkpassescargo testpasses with analysis tests, LLDB parser tests, and real LLDB integration tests against compiled C and C++ fixturescargo run -p tra86-applaunches the desktop app- the LLDB path can launch, attach, inspect memory/registers/frames, resolve symbols/source, and step real native fixtures
What is not yet true:
- this is not a production-ready tracer/debugger
- the backend is not yet robust across common failure cases
- mid-run pause/stop is still not reliable enough on the current LLDB CLI transport, so the UI does not pretend that it is
- the analysis layer is still thin
- the architecture still contains a few abstractions that overpromise capability
tra86-core: normalized execution/domain typestra86-backend: backend trait, errors, mock backend, thin backend wrappertra86-backend-lldb: LLDB-specific adapter and parserstra86-analysis: register delta and instruction classification helperstra86-ui: egui rendering and UI event modeltra86-app: application wiring, worker thread, session persistence
- egui desktop shell
- backend worker thread to keep debugger work off the UI thread
- disassembly, registers, frames, threads, breakpoints, memory, trace panes
- LLDB adapter behind a Rust trait instead of embedding LLDB types in the UI
- a mock backend that is useful for UI work but currently makes the product look farther along than it is
- the LLDB adapter is text-protocol brittle
- the session model is better than it was, but it is still not a full state machine with generation tracking
- some backend failure paths are now surfaced in the UI, but lifecycle recovery is still incomplete
- test coverage is now real but still thin compared to the size of the product goal
- some abstractions are more decorative than proven
Prerequisites:
- Rust stable toolchain
- LLDB installed and available on
PATH - macOS or Linux desktop environment
Commands:
cargo check
cargo test
cargo run -p tra86-appInteractive debugger CLI:
cargo run -p tra86-app --bin tra86_cli
cargo run -p tra86-app --bin tra86_cli -- launch /path/to/program -- arg1 arg2
cargo run -p tra86-app --bin tra86_cli -- attach 12345Once the CLI starts, use help to list commands for launch, attach, stepping, register reads,
memory reads, breakpoints, and disassembly.
Useful smoke check:
cargo run -p tra86-app --bin lldb_smoke -- /path/to/debuggable/binaryPerformance notes and current hotspots live in PERF.md.
The intended product is still the same:
- Rust-native desktop application
- backend-agnostic normalized execution model
- real tracing/debugging on native binaries
- strong debugger fidelity before UI polish
The next work should focus on backend reliability, a better transport for true async pause/resume behavior, typed failure handling, and a session model that does not drift out of sync when the target process does something inconvenient.