在 Linux 下使用 GDB(GNU Debugger) 反汇编程序,通常有几种常见方式。下面按使用场景给你一个实用指南。
gcc -g -O0 -o test test.c
-g:生成调试信息-O0:关闭优化,反汇编更易读gdb ./test
disassemble(最常用)(gdb) disassemble
反汇编当前函数
指定函数或地址:
(gdb) disassemble main
(gdb) disassemble 0x401126
指定范围:
(gdb) disassemble 0x401100, 0x401200
disassemble /m(混合源码)(gdb) disassemble /m main
disassemble /r(显示机器码)(gdb) disassemble /r main
输出示例:
0x401126 <main+10>: 55 push %rbp
程序停住时:
(gdb) disassemble $pc
或:
(gdb) x/10i $pc
x/10i:从 $pc 开始反汇编 10 条指令(gdb) set disassembly-flavor intel
(gdb) disassemble main
查看当前设置:
(gdb) show disassembly-flavor
✅ 建议:
(gdb) break main
(gdb) run
(gdb) disassemble
或单步执行汇编:
(gdb) stepi # 单步一条汇编
(gdb) nexti # 跳过函数调用
(gdb) info registers
(gdb) x/10xw $rsp
如果只是想看反汇编,不调试:
objdump -d test
或带源码:
objdump -d -S test
(gdb) set disassembly-flavor intel
(gdb) break main
(gdb) run
(gdb) disassemble /m main
(gdb) stepi
如果你愿意,可以告诉我:
我可以给你更针对性的 GDB 反汇编技巧。