3

次のような小さなプログラムを作成しました。

#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を使用して、 .outファイルを作成できます。save-tempsフラグを使用すると、中間ファイル、helloworld.i、helloworld.s、helloworld.o を保存できます。

実行中にこのプログラムのスタックがどのように変化するかを正確に知りたいです。どなたか、やり方を教えてください。

この質問の目的は、プログラムの実行中に何が起こるかを正確に知ることです。

4

1 に答える 1

1

helloworld.s を見るだけで、プログラム内のアセンブリ コードのリストが表示されます。このリストから、スタックに何が起こっているかを正確に知ることができ、変数がいつどこでポップオフ/プッシュされるかを観察できます。プログラムの実行を観察したい場合は、フラグを使用してコードをコンパイルし、gdb-gを介して実行できます。

于 2010-03-27T23:23:07.110 に答える