относительно:
gcc -std=c99 -g -o test test.c
Намного лучше включить предупреждения, а затем исправить эти предупреждения. Предложите:
gcc -std=c99 -ggdb3 -Wall -Wextra -Wconversion -pedantic -c test.c -o test.o
опции для gcc
приведут к отображению нескольких проблем с кодом OP, которые необходимо исправить перед продолжением шага ссылки:
шаг ссылки:
gcc -std=c99 -ggdb3 test.o -o test
Примечание: опция: -ggdb3
приведет к максимальному количеству отладочной информации в объектном файле: test.o и должна использоваться как на этапах компиляции, так и на ссылках
Обратите внимание на следующее утверждение:
printf("Hey");
, вероятно, не будет отображаться на терминале, пока программа не закроется. Это связано с тем, что выходной поток stdout
буферизируется, и его необходимо «поощрять» для передачи данных на терминал. Простой способ сделать это - завершить строку формата с помощью '\ n'. IE
printf("Hey\n");
подходящий способ запуска GDB:
gdb test
br main
run
continue
в gdb
:
нет необходимости указывать какой-либо «путь» (вы следует запустить gdb
в том же каталоге, что и исходный код, объект и исполняемый файл), в противном случае вам нужно будет ввести еще несколько команд в gdb
перед тем, как набрать: br main
команда: br main
будет установить точку останова в начале функции main()
Команда: run
будет запускать исполняемый файл до точки останова на main()
Команда: continue
заставит остальную часть исполняемого файла работать до завершения