要反汇编带调试信息的文件,一般有两种常见场景:反汇编 ELF / PE 可执行文件 或 目标文件(.o),并且文件里通常含有 DWARF / PDB 等调试信息。下面按常用工具分别说明。
objdump(Linux / ELF 常用)objdump -d test
objdump -S test
✅ -S 会把源码和汇编交错显示,前提是编译时加了 -g
示例编译:
gcc -g -O0 test.c -o test
输出类似:
main():
int a = 1;
400526: c7 45 fc 01 00 00 00 movl $0x1,-0x4(%rbp)
objdump -d test | grep -A 20 "<main>"
gdb(推荐,调试信息最完整)gdb ./test
disassemble
disassemble main
layout split
disassemble /r main
✅ 优点:
llvm-objdump(LLVM 工具链)llvm-objdump -S test
或:
llvm-objdump -d test
适合 clang 编译的程序。
dumpbin /DISASM test.exe
file test
输出包含:
with debug_info
或:
readelf -S test | grep debug
dumpbin /PDBALTPATH test.exe
✅ 推荐编译方式:
gcc -g -O0 test.c -o test
❌ 不推荐:
gcc -O2 -s test.c -o test
| 目的 | 推荐工具 |
|---|---|
| 快速反汇编 | objdump -d |
| 源码+汇编对照 | objdump -S |
| 调试/变量分析 | gdb |
| LLVM 项目 | llvm-objdump |
| Windows | WinDbg / x64dbg |
如果你愿意,可以告诉我:
我可以给你更精确的一步步操作示例。