«шаг» не завершает программу в конце программы, но завершает ее после еще 5 «шагов» - PullRequest
0 голосов
/ 02 января 2019

Я использую Windows 10. Я написал программу HelloWorld на C.

#include <stdio.h>

int main()
{
    printf("Hello World\n");
    return 0;
}

Я скомпилировал это с помощью cmd с помощью следующей команды

gcc -g -o HelloWorld HelloWorld.c

В gdb я пишу start.И я набрал step довольно много раз.В какой-то момент он печатает

(gdb) step
7       }

Затем я снова набрал step.Он печатает

(gdb) step
__tmainCRTStartup () at C:/crossdev/src/mingw-w64-v4-git/mingw-w64-crt/crt/crtexe.c:334
334     C:/crossdev/src/mingw-w64-v4-git/mingw-w64-crt/crt/crtexe.c: No such file or directory.

После другого шага он печатает

332     in C:/crossdev/src/mingw-w64-v4-git/mingw-w64-crt/crt/crtexe.c

После этого он печатает над строкой каждый раз, когда я пишу step.И в конце концов когда-нибудь он напечатал

[Thread 1952.0x1628 exited with code 0]
[Inferior 1 (process 1952) exited normally]

Я хочу знать, что я сделал неправильно, что вызывает проблему.

1 Ответ

0 голосов
/ 02 января 2019

«шаг» не окончание программы в конце программы

Проблема в том, что ваше представление о том, где и где начинается ваша программа, совершенно неверно: ваша программа выполняет 100 или 1000 команд до того, как она достигнет main, и еще 100 или 1000 секунд после возврата main.

Эти инструкции являются частью запуска и завершения C времени выполнения. Обычно вы не заинтересованы в отладке там, но разработчики среды выполнения C должны отлаживать ее, и отладчик не знает, хотите вы этого или нет.

Можете ли вы сказать мне, как я могу сказать GDB отлаживать только мой код.

GDB не знает какой код является вашим собственным, а какой нет (и я не верю, что есть способ сказать это).

Если вы не хотите отлаживать после окончания main, не просите GDB сделать это: как только вы достигнете конца «вашего кода», используйте continue вместо step.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...