файл в качестве исполнимого | |
-core=файл или -с файл | Указать файл дампа |
-command=файл или -x файл | Выполнить указанные в файле команды (используется в командном режиме) |
-d каталог | Добавить каталог к списку поиска исходных текстов |
[prog|core|procID] | Последний параметр задает объект, который нужно отлаживать. Вы можете задать программу (prog), или дамп-файл (core), который будет создан в случае ошибки программы (Segmentation fault), или же подсоединиться к уже запущенному процессу (procID) |
-p PID | Подключиться к уже запущенному процессу (данная опция стала доступной в версии gdb 5.2) |
Чтобы использовать gdb для отладки вашей программы, нужно добавить в исполняемый файл отладочную информацию. Для этого откомпилируете вашу программу с опцией -g:
$ gcc -g -o prog prog.c
Данная опция включает отладочную информацию в родном для операционной системы формате, с которым может работать gdb.
Затем нужно вызвать gdb так:
$ gdb prog
Если после запуска вашей программы произошла ошибка и был создан дамп-файл (core), можно передать отладчику и этот файл:
$ gdb prog core
Можно также подключиться к уже запущенному процессу, для этого нужно передать его PID:
$ gdb 1111
Только убедитесь сначала в том, что у вас нет файла 1111, поскольку gdb сначала ищет исполняемый файл, затем core-файл, а уже затем PID.
После запуска отладчика в интерактивном режиме вы можете использовать команды, самые важные из которых перечислены в таблице 22.2. Об остальных можно узнать в справочной системе: man gdb.
Команды gdb Таблица 22.2
Команда | Назначение |
---|---|
break [файл:]функция | Установить точку останова |
run [аргументы] | Запустить программу и передать ей указанные аргументы |
bt | Обратная трассировка: отобразить стек программы |
print выражение | Вывести значение выражении, операндами могут быть переменные, объявленные в вашей программа |
С | Продолжить выполнение программы (после останова) |
Next | Выполнить следующую строку. Это так называемый шаг «над» (step over). Если следующая строка — вызов функции, то мы выполним ее за один шаг — «перешагнем» ее |
Step | Выполнить следующую строку, Это так называемый шаг «в» (step into). Если следующая строка — вызов функции, то мы будем последовательно выполнять все операторы тела функции |
help [имя] | Вывести справку о команде отладчика или вывести общую информацию о нем |
Quit | Выход |
В данной таблице приведены далеко не все команды. Если вас интересует более полная информация, обратитесь к руководству по gdb.
22.3. Пример отладки программы