cargo-disasm
                                
                                
                                
                                    cargo-disasm copied to clipboard
                            
                            
                            
                        Disassembly viewer for rust projects.
cargo-disasm
A cargo subcommand that displays the assembly generated for a function.
cargo-disasmdoes not require recompiling your project, it disassembles and finds symbols in your binary directly.
This is still under heavy development
For now
cargo-disasmcan disassemble symbols fromELF(Linux),Mach(MacOS), anPE/COFF(Windows) object files for binary crates and make use of DWARF and PDB debug information for symbol discovery. Check here to see the current progress.
cargo install cargo-disasm
Usage
To view the assembly of a function foo::bar::baz(), a function baz in module
bar in crate foo, the subcommand can be run from your crate's root directory:
# Make sure that your project has a binary to disassemble first:
cargo build
cargo disasm foo::bar::baz
Sometimes cargo-disasm has trouble finding your symbols in release mode. To make
sure that cargo-disasm is searching all sources available, --symsrc=all can be
passed as an argument like so:
# Make sure that your project has a release binary to disassemble first:
cargo build --release
cargo disasm --release --symsrc=all foo::bar::baz
This solution is temporary and the default
--symsrc=autoshould be able to figure this out on its own soon.
TODO
- [x] Showing source code alongside disassembly (DWARF only, PDB not yet supported)
 
Windows
- [x] PE/COFF file disassembly and symbol discovery
 - [x] use PDB for symbol discovery (MSVC toolchain)
 - [x] use DWARF for symbol discovery (GNU)
 
MacOS
- [x] Mach file disassembly and symbol discovery
 - [x] use dSYM (DWARF) for symbol discovery
 
Linux
- [x] ELF file disassembly and symbol discovery
 - [x] use DWARF for symbol discovery
 
Line Information
- [x] use DWARF for line information
 - [ ] use PDB for line information
 
Postponed
- ~~Syntax highlighting for disassembly~~ (good for higher level source code, unecessary for assembly)
 - ~~Optional arrows for displaying jump sources and targets~~ (too noisy)