| файл в качестве исполнимого | |
| -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. Пример отладки программы
