Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методические указания Редакция 1.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
100 Кб
Скачать
☆

Отладчик gdb

Отладчик gdb – свободно распространяемая программа, защищенная Универсальной Общественной Лицензией GNU (General People License GPL). Назначение отладчика gdb ‑ позволить "увидеть", что происходит внутри отлаживаемой программы во время ее выполнения.

Примечание. Далее для краткости прилагаемое "отлаживаемая" будет опущено.

Компиляция для отладки

Прежде чем выполнять программу под управлением gdb, при компиляции необходимо сгенерировать отладочную информацию, которая сохраняется в объектном файле. Она описывает тип данных каждой переменной или функции, и соответствие между номерами строк исходного текста и адресами в выполняемом коде.

Чтобы осуществить генерацию отладочной информации, при вызове компилятора необходимо использовать ключ '-g'.

GNU компилятор gcc поддерживает '-g' с или без '-О', делая возможным отладку оптимизированного кода. Рекомендуется всегда использовать '-g' при компиляции программ..

Когда осуществляется отладка программы, откомпилированной с ключами '-g -O', следует помнить, что оптимизатор перестраивает код; отладчик же показывает то, что там находится в действительности. Порядок выполнения может в точности не соответствовать исходному файлу. Например, если определена переменная, которая нигде не используется, gdb никогда не увидит этой переменной, потому что при оптимизации компилятор ее исключит.

Вход-выход

Начав работу, gdb считывает команды с терминала до тех пор, пока пользователь не введет команду выхода. Чаще всего gdb вызывается с одним аргументом, который определяет исполняемую программу:

gdb программа

При старте gdb можно указать как исполняемую программу, так и файл дампа памяти:

gdb программа дамп

Сразу после запуска gdb выводит командное приглашение:

(gdb)

Для выхода из отладчика следует ввести команду quit или Ctrl+D.

Команды gdb

Команда gdb представляет собой одну строку ввода. Никаких ограничений на ее длину нет. Она начинается именем команды, за которым могут следовать параметры. Некоторые команды не допускают никаких параметров.

Названия команд gdb всегда могут быть сокращены, если это сокращение однозначно. Можно использовать клавишу TAB для того, чтобы gdb сам дополнил остаток слова в команде (или показал возможные альтернативы, если существует несколько вариантов). Если при нажатии TAB существует несколько вариантов для следующего слова, gdb издает звук. Можно либо ввести больше символов и попробовать снова, либо нажать TAB второй раз; gdb выведет все возможные завершения для этого слова. Например, пользователь захотел установить точку останова на подпрограмме, чье имя начинается с 'make_', но при вводе b make_TAB, gdb лишь издает звук. Повторное нажатие TAB отображает все имена функций в отлаживаемой программе, начинающиеся с этих символов.

(gdb) b make_ TAB

GDB издает звук; нажав TAB еще раз, видим:

make_abc make_function

make_block make_envir

make_ command make_ pointer

make_ contour make_ symbol

В некоторых случаях, допускаются неоднозначные сокращения, например, сокращение s специально определено как эквивалент часто используемой команды step, не смотря на то, что существуют другие команды, чьи названия начинаются на s. Сокращения можно проверить, задавая их как параметр для команды help.

Введенная пустая строка (просто нажатие клавиши ENTER), означает повтор предыдущей команды. Определенные команды (например, run) не повторяются таким способом; это те команды, непреднамеренное повторение которых может вызвать проблемы и которые вряд ли стоит повторять. Команды list и x, при их повторе нажатием RET, вместо точного повтора создают новые параметры. Это позволяет легко просматривать исходный текст или память.

Любой текст, расположенный от # до конца строки является комментарием.