完成一个过程的状态

时间:2010-03-25 15:23:00

标签: c linker compilation loader execution

我写了一个小程序,如下:

#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

现在我想确切知道这个程序的堆栈在执行过程中是如何变化的。有人可以告诉我如何去做。

我这个问题的目的是确切地知道在执行任何程序时会发生什么。

1 个答案:

答案 0 :(得分:1)

你可以简单地看一下helloworld.s,它会在程序中有一个汇编代码列表,你可以准确地告诉堆栈发生了什么,并且可以观察变量弹出/推到它的位置和时间。如果你想观察程序的执行,你也可以使用-g标志编译代码,然后通过gdb运行它。