cargo-disasm 0.1.2

Disassembly viewer for Rust projects (and more)
Documentation

cargo-disasm

crates.io version build status license

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 from ELF object files for binary crates and make use of DWARF 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=auto should be able to figure this out on its own soon.

TODO

  • Optional arrows for displaying jump sources and targets
  • Showing source code alongside disassembly
  • Syntax highlighting for disassembly

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

  • ELF file disassembly and symbol discovery
  • use DWARF for symbol discovery and line information