在 Linux 下查看“汇编代码”通常分几种场景,下面按常见需求给你系统说明。
objdump(最基础、最常用)objdump -d ./a.out
常用选项:
objdump -d -M intel ./a.out # Intel 语法(默认是 AT&T)
objdump -S ./a.out # 汇编 + 源码混合
objdump -d -M intel -S ./a.out
gdb(调试时看汇编)gdb ./a.out
(gdb) disassemble main
查看当前函数:
(gdb) disas
切换语法:
(gdb) set disassembly-flavor intel
单步执行汇编:
(gdb) stepi
(gdb) nexti
nm / readelf(看符号和段,不直接看汇编)nm ./a.out
readelf -S ./a.out
gcc 直接生成汇编gcc -S test.c
生成 test.s
Intel 语法:
gcc -S -masm=intel test.c
gcc -g -S -fverbose-asm test.c
或:
objdump -S -M intel ./a.out
strace(看系统调用,不是汇编)strace ./a.out
ltrace(库调用)ltrace ./a.out
| 工具 | 用途 |
|---|---|
radare2 |
逆向分析 |
Ghidra |
反编译 |
IDA (Wine) |
商业逆向 |
perf |
性能 + 汇编级热点 |
示例:
r2 -d ./a.out
| 需求 | 命令 |
|---|---|
| 看可执行文件汇编 | objdump -d |
| 汇编+源码 | objdump -S |
| 调试看汇编 | gdb → disas |
| C 转汇编 | gcc -S |
| Intel 语法 | -M intel |
如果你愿意,可以告诉我:
我可以给你更精准的命令示例。