Составители:
Рубрика:
29
4.2.4. Описание GDB
Стандартным средством для отладки программ, скомпилированных компилятором GCC, является
отладчик GDB. Этот отладчик свободно распространяется в рамках проекта GNU. Домашняя
страничка отладчика находится по адресу www.gnu.org/software/gdb/gdb.html.
Чтобы указать компилятору (gcc), что вы планируете отлаживать вашу программу, и поэтому
нуждаетесь в дополнительной информации, добавьте ключ -g в опции компиляции и компоновки.
Например, если программа состоит из двух файлов main.c и utils.c, можно скомпилировать ее
командами:
gcc -c -g Wall main.c
gcc -c -g -Wall utils.c
gcc -g -o prog main.o utils.o
или одной командой:
gcc -g -Wall -o prog main.o utils.o
Обе последовательности команд приводят к созданию исполняемого файла prog.
Чтобы выполнить полученную программу под управлением gdb, введите
gdb prog
Вы увидите командное приглашение GDB:
(gdb)
Это очень простой, но эффективный текстовый интерфейс отладчика. Его вполне достаточно,
чтобы ознакомиться с основными командами gdb.
Когда GDB запускается, ваша программа в нем еще не выполняется; вы должны сами сообщить
GDB, когда ее запустить. Как только программа приостанавливается в процессе выполнения, GDB
ищет определенную строку исходной программы с вызовом определенной функции - либо строку в
программе, где произошел останов, либо строку, содержащую вызов функции, в которой произошел
останов, либо строку с вызовом функции и т.д. Далее используется термин текущее окно, чтобы
сослаться на точку останова.
Как только возникает командное приглашение, можно использовать следующие команды:
help command — выводит краткое описание команды GDB (просто help выдает список доступных
разделов справки);
run command-line-arguments — запускает программу с определенными аргументами командной
строки. GDB запоминает переданные аргументы, и простой перезапуск программы с помощью run
приводит к использованию этих аргументов;
where — создает цепочку вызовов функций, произошедших до попадания программы в текущее
место. Синонимом является команда bt;
up — перемещает текущее окно так, чтобы GDB анализировал место, из которого произошел
вызов данного окна. Очень часто Ваша программа может войти в библиотечную функцию — такую,
для которой не доступен исходный код, например, в процедуру ввода-вывода. вам может понадобиться
несколько команд up, чтобы перейти в точку программы, которая была выполнена последней;
down — производит эффект, обратный up;
print E — выводит значение E в текущем окне программы, где E является выражением C++
(обычно просто переменной). Каждый раз при использовании этой команды, GDB нумерует ее
упоминание для будущих ссылок.
quit — выход из GDB;
Ctrl-c — если программа запущена через оболочку shell, Ctrl-c немедленно прекращает ее
выполнение. В GDB программа приостанавливается, пока ее выполнение не возобновится;
break place — установить точку останова; программа приостановится при ее достижении.
Простейший способ - установить точку останова после входа в функцию.
Команда break main остановит выполнение в начале программы. Также можно установить точки
останова на определенную строку исходного кода. Когда программа запущена и она достигнет точки
останова, то об этом выводится специальное сообщение.
delete N — удаляет точку останова с номером N. Если опустить N, будут удалены все точки
Страницы
- « первая
- ‹ предыдущая
- …
- 27
- 28
- 29
- 30
- 31
- …
- следующая ›
- последняя »
