11 个不稳定版本
0.6.0 | 2023年6月19日 |
---|---|
0.5.0 | 2020年11月23日 |
0.4.1 | 2020年11月19日 |
0.3.0 | 2020年11月16日 |
0.1.3 | 2020年11月7日 |
#299 在 Cargo 插件 中
62 每月下载量
26MB
1M SLoC
cargo-disasm
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
(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
使用方法
要查看函数 foo::bar::baz()
的汇编,即 crate foo
中模块 bar
中的函数 baz
,可以从您的 crate 根目录运行子命令
# Make sure that your project has a binary to disassemble first:
cargo build
cargo disasm foo::bar::baz
有时 cargo-disasm
在 release
模式下难以找到您的符号。为了确保 cargo-disasm
正在搜索所有可用的源,可以像这样传递参数 --symsrc=all
# Make sure that your project has a release binary to disassemble first:
cargo build --release
cargo disasm --release --symsrc=all foo::bar::baz
此解决方案是临时的,默认的
--symsrc=auto
应该能够很快自行解决这个问题。
待办事项
- 在反汇编旁边显示源代码(仅限 DWARF,PDB 尚不支持)
Windows
- PE/COFF 文件反汇编和符号发现
- 使用 PDB 进行符号发现(MSVC 工具链)
- 使用 DWARF 进行符号发现(GNU)
MacOS
- Mach 文件反汇编和符号发现
- 使用 dSYM (DWARF) 进行符号发现
Linux
- ELF 文件反汇编和符号发现
- 使用 DWARF 进行符号发现
行信息
- 使用 DWARF 进行行信息
- 使用 PDB 进行行信息
推迟
反汇编的语法高亮(适用于高级源代码,对于汇编来说不必要)显示跳转源和目标的可选箭头(太嘈杂)
依赖项
~10–20MB
~275K SLoC