如何用gdb调试成C程序对应的反汇编?

How to use gdb to debug into a C program's corresponding disassembly?

使用VC可以调出反汇编window并穿越它。但是使用gdb好像不是那么直接:

例如我有一个 myadd.c

void main(){
   int i=0;
   int j=i+1;
   j+=2;
}

gcc -g myadd.c

gdb a.out

b 2 //set break point at int j=1+1;

现在我可以使用"disassemble"命令查看反汇编代码了。我的要求是像 VC 那样调试 "into" 这个反汇编代码。我试过 's' 命令,它直接进入下一个 "C" 语句,而不是反汇编语句。

怎么做?

要跳转到下一条汇编指令,请改用 stepi(简称 si)。

请参阅 this 了解更多信息,尤其是如何使用 display/i 显示下一条机器指令。

要获得相当不错的程序集视图,请使用 la p (layout prev) 并使用 si (stepi)。使用 C-x a 到 return to/from 常规 gdb 提示符。在某些情况下,其他布局也可能有用。