This repository is intended to curate a list of Rust crates for writing debuggers and other related tools. We also have an IRC channel for discussion on irc.mozilla.org, #rust-debugger-tools.
List of useful crates
Mature
- gimli - DWARF parser
- goblin - Parser for binary formats (ELF/Mach-O/PE)
- object - A cross-platform abstraction built atop goblin to unify handling of various object file formats
- addr2line - A simple interface built atop gimli to look up source file/line/function information given an address in a binary
- capstone - Rust interface to the capstone multi-architecture disassembly framework (x86/x86-64/arm/aarch64 and more)
- cpp_demangle A crate for demangling C++ symbols.
Working
- pdb - Parser for Microsoft PDB format debugging symbols
- spawn-ptrace - Spawn a child process with ptrace enabled
- spawn-task-port - Spawn a child process on macOS and get a hold of its Mach task port
- read-process-memory - Read memory from another process
- elfkit - ELF manipulation for writing tools like binutils
- lldb - Bindings to LLDB, the LLVM debugger
- disassemble - A crate for working with disassembled code
cargo-tarpaulin
A code coverage tool for Rust projectsmsvc-demangler
Experimental
- moria - Locate detached debug symbols
- minidump - Parser for Microsoft minidump crash report files
- disasm - A tool for producing source-interleaved disassembly built using object+moria+addr2line+capstone
- tracetree - Trace a process and all of its children on Linux
- burst - A disassembler that currently works with x86 and x86_64 code.
Work in progress
- gdb-remote-protocol - Implementation of the GDB remote protocol
- pdb-download - Fetch PDB symbols from a symbol server