如何用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 提示符。在某些情况下,其他布局也可能有用。
使用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 提示符。在某些情况下,其他布局也可能有用。