Обычный процесс разработки компьютерных программ выглядит примерно так: напишите код, скомпилируйте его, запустите программу. Если программа работает не так, как ожидалось, то вы возвращаетесь к коду для поиска ошибок (багов) и повторяете цикл заново.
В зависимости от сложности программы и характера ошибок бывают случаи, когда вам может потребоваться дополнительная помощь в отслеживании ошибок. Это то, что делает «отладчик». Это позволяет вам проверять компьютерную программу во время ее работы. Вы можете видеть значения различных переменных, проверять содержимое памяти, останавливать программу в указанной точке и выполнять код по одной строке за раз.
Основным отладчиком в Linux является отладчик GNU (gdb). Возможно, он уже установлен в вашей системе (или уменьшенная версия под названием gdb-minimal), но для уверенности введите в терминале следующую команду:
sudo apt-get install gdb
Чтобы использовать отладчик, вам необходимо указать компилятору включить отладочную информацию в двоичный файл. Создайте файл с именем «hello10.c» с помощью nano:
nano hello10.c
Скопируйте и вставьте следующий код:
#include <stdio.h> main() { int i; for(i=0;i The "-g" flag tells the compiler to produce debug information, so to compile the program use: <pre class="bash">gcc -g -o hello10 hello10.c
Чтобы начать отладку программы, введите:
gdb hello10
Если на этом этапе вы просто запустите программу (используя команду «Выполнить»), программа выполнится и завершится, прежде чем вы сможете что-либо сделать. Чтобы остановить это, вам нужно создать «точку останова», которая остановит программу в указанной точке. Самый простой способ сделать это — указать отладчику остановиться в функции «main()»:
break main
Теперь запустите программу:
run
Отладчик остановился на первой исполняемой строке кода, например. цикл «для». Чтобы перейти к следующей строке, введите «next» или для краткости «n». Продолжайте использовать «Далее», чтобы повторить цикл пару раз:
Чтобы проверить значение переменной, используйте команду «print». В нашем примере программы мы можем проверить содержимое переменной «i»:
print i
Повторите цикл еще несколько раз и посмотрите, как изменится буква «i»:
next next next next print i
В приведенном выше примере «i» достигло значения 4. Цикл будет продолжаться, пока «i» меньше 10. Вы можете изменить значение переменной, используя «set var». Введите следующую команду в GDB, чтобы установить для «i» значение 10.
set var i = 10 print i next
Возможно, вам придется сделать еще одно «следующее» (в зависимости от того, где программа была остановлена, когда вы установили для «i» значение 10), но когда в следующий раз будет выполнена строка цикла «for», цикл завершится, потому что «i» » больше не меньше 10.
Команда «next» не детализирует функции, а выполняет функцию, и отладчик снова останавливается на следующей строке после функции. Если вы хотите войти в функцию, используйте команду «шаг» или для краткости «s».
Другой способ отладки вашей программы — установить контроль над переменной. Это останавливает программу при каждом изменении переменной. Перезапустите программу еще раз, набрав «Выполнить». Поскольку программа уже запущена, отладчик спросит, хотите ли вы запустить ее еще раз с самого начала.
Программа остановится в основном режиме (поскольку мы не удалили точку останова). Теперь установите часы на «i»:
watch i continue
Команда «продолжить» снова запускает программу до следующего условия точки останова. В этом случае он будет работать снова, пока переменная «i» не изменится (из-за наблюдения).
Чтобы остановить отладку, просто используйте команду «quit».
Если вы хотите узнать больше о GDB, то лучше всего начать с Документация ГБД . Если у вас возникли проблемы с примерами, приведенными выше, воспользуйтесь разделом комментариев ниже, и мы посмотрим, сможем ли вам помочь.