ГлавнаяОперационные системыLinuxКак отладить программу на C или C++ в Linux с помощью gdb

Как отладить программу на C или C++ в Linux с помощью gdb

GDB-талисман-лучникОбычный процесс разработки компьютерных программ выглядит примерно так: напишите код, скомпилируйте его, запустите программу. Если программа работает не так, как ожидалось, то вы возвращаетесь к коду для поиска ошибок (багов) и повторяете цикл заново.

В зависимости от сложности программы и характера ошибок бывают случаи, когда вам может потребоваться дополнительная помощь в отслеживании ошибок. Это то, что делает «отладчик». Это позволяет вам проверять компьютерную программу во время ее работы. Вы можете видеть значения различных переменных, проверять содержимое памяти, останавливать программу в указанной точке и выполнять код по одной строке за раз.

Основным отладчиком в 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

GDB-брейк-бег

Отладчик остановился на первой исполняемой строке кода, например. цикл «для». Чтобы перейти к следующей строке, введите «next» или для краткости «n». Продолжайте использовать «Далее», чтобы повторить цикл пару раз:

GDB-брейк-следующий

Чтобы проверить значение переменной, используйте команду «print». В нашем примере программы мы можем проверить содержимое переменной «i»:

print i

Повторите цикл еще несколько раз и посмотрите, как изменится буква «i»:

next
 
next
 
next
 
next
 
print i

GDB-следующий-печать-я

В приведенном выше примере «i» достигло значения 4. Цикл будет продолжаться, пока «i» меньше 10. Вы можете изменить значение переменной, используя «set var». Введите следующую команду в GDB, чтобы установить для «i» значение 10.

set var i = 10
 
print i
 
next

GDB-set-var

Возможно, вам придется сделать еще одно «следующее» (в зависимости от того, где программа была остановлена, когда вы установили для «i» значение 10), но когда в следующий раз будет выполнена строка цикла «for», цикл завершится, потому что «i» » больше не меньше 10.

Команда «next» не детализирует функции, а выполняет функцию, и отладчик снова останавливается на следующей строке после функции. Если вы хотите войти в функцию, используйте команду «шаг» или для краткости «s».

Другой способ отладки вашей программы — установить контроль над переменной. Это останавливает программу при каждом изменении переменной. Перезапустите программу еще раз, набрав «Выполнить». Поскольку программа уже запущена, отладчик спросит, хотите ли вы запустить ее еще раз с самого начала.

Программа остановится в основном режиме (поскольку мы не удалили точку останова). Теперь установите часы на «i»:

watch i
 
continue

Команда «продолжить» снова запускает программу до следующего условия точки останова. В этом случае он будет работать снова, пока переменная «i» не изменится (из-за наблюдения).

GDB-смотреть-я

Чтобы остановить отладку, просто используйте команду «quit».

Если вы хотите узнать больше о GDB, то лучше всего начать с Документация ГБД . Если у вас возникли проблемы с примерами, приведенными выше, воспользуйтесь разделом комментариев ниже, и мы посмотрим, сможем ли вам помочь.

ПОХОЖИЕ СТАТЬИ

Популярные записи