在 Linux 下查看反汇编(disassembly)有多种方式,取决于你面对的是可执行文件、进程、内核还是某个函数。下面按常见场景系统说明。
objdump(最常用,静态反汇编)适合分析 ELF 文件(可执行文件 / .o / .so)
objdump -d ./a.out
-g 编译)objdump -S ./a.out
objdump -d ./a.out | grep -A 30 main
objdump -t ./a.out
gdb(动态 + 反汇编)适合调试、查看运行时汇编
gdb ./a.out
disassemble
disassemble main
disassemble 0x400520, 0x400560
layout split
x/10i $pc
nm(看符号,不反汇编)nm ./a.out
readelf(查看 ELF 结构)readelf -h ./a.out # 文件头
readelf -S ./a.out # 段表
readelf -s ./a.out # 符号
llvm-objdump(LLVM 工具链)llvm-objdump -d ./a.out
gdb -p <pid>
(gdb) disassemble
cat /proc/<pid>/maps
cat /proc/kallsyms
objdump -d vmlinux
| 场景 | 工具 |
|---|---|
| 看汇编 | objdump -d |
| 调试 | gdb |
| 看符号 | nm / readelf |
| 源码对照 | objdump -S |
| 运行时 | gdb -p |
如果你能告诉我:
我可以给你更精确的命令示例。