Завершенное состояние процесса - PullRequest
3 голосов
/ 25 марта 2010

Я написал небольшую программу, которая выглядит следующим образом:

#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;
}

Я могу создать файл a.out с помощью команды gcc -save-temps helloworld.c . Флаг save-temps позволяет нам сохранять промежуточные файлы, helloworld.i, helloworld.s, helloworld.o

Теперь я хочу точно знать, как изменяется стек этой программы во время выполнения. Может кто-нибудь, пожалуйста, скажите мне, как это сделать.

Моя цель этого вопроса - точно знать, что все происходит во время выполнения любой программы.

1 Ответ

1 голос
/ 28 марта 2010

Вы можете просто взглянуть на helloworld.s, у него будет список ассемблерного кода в программе, из этого вы можете точно сказать, что происходит со стеком, и можете наблюдать, где и когда переменные выталкиваются / проталкиваются на него. Если вы хотите наблюдать за выполнением программы, вы можете также скомпилировать код с флагом -g, а затем запустить его через gdb .

...