我写了一个小程序,如下:
#include<stdio.h>
int c=0;
int main()
{
int a=10,b=20;
printf("Hello World\n");
c = a+b;
printf("%d\n",c);
return 0;
}
我可以使用 gcc -save-temps helloworld.c 命令创建 a.out 文件。 save-temps 标志允许我们保存中间文件helloworld.i,helloworld.s,helloworld.o
现在我想确切知道这个程序的堆栈在执行过程中是如何变化的。有人可以告诉我如何去做。
我这个问题的目的是确切地知道在执行任何程序时会发生什么。
答案 0 :(得分:1)
你可以简单地看一下helloworld.s,它会在程序中有一个汇编代码列表,你可以准确地告诉堆栈发生了什么,并且可以观察变量弹出/推到它的位置和时间。如果你想观察程序的执行,你也可以使用-g
标志编译代码,然后通过gdb运行它。