A cargo subcommand that displays the assembly generated for a function.
cargo-disasm
does not require recompiling your project, it disassembles and finds symbols in your binary directly.
This is still under heavy development
For now
cargo-disasm
can disassemble symbols fromELF
object files for binary crates and make use of DWARF debug information for symbol discovery. Check here to see the current progress.
sh
cargo install cargo-disasm
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:
```sh
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:
```sh
cargo build --release cargo disasm --release --symsrc=all foo::bar::baz ```
This solution is temporary and the default
--symsrc=auto
should be able to figure this out on its own soon.
Windows
- [ ] PE/COFF file disassembly and symbol discovery
- [ ] use PDB for symbol discovery and line information
MacOS
- [ ] Mach file disassembly and symbol discovery
- [ ] use dSYM (DWARF) for symbol discovery and line information
Linux
- [x] ELF file disassembly and symbol discovery
- [x] use DWARF for symbol discovery and line information