Ада-95. Компилятор GNAT

       

Знакомство с командами GDB


Отладчик GDB поддерживает обширный набор команд.

Руководство "Отладка с помощтью GDB" (Debugging with GDB) содержит полное описание всех команд и предоставляет большое количество примеров их использования.

Более того, GDB имеет встроенную команду help, которая выдает краткую справку о доступных командах и их опциях.

Следует заметить, что здесь, для демонстрации принципов использования отладчика GDB, рассматриваются только несколько наиболее часто употребляемых команд.

При чтении данного материала следует создать какую-нибудь простую программу с отладочной информацией и поэкспериментировать с указанными командами.

set args arguments

С помощью данной команды можно указать список аргументов arguments, которые будут переданы программе при выполнении последующей команды run.

В использовании команды set args нет необходимости, когда программа не нуждается в аргументах.

run

Команда run осуществляет запуск программы на выполнение со стартовой точки.

Если программа была запущена ранее, а в текущий момент ее выполнение приостановлено в какой-либо точке прерывания, то отладчик запросит подтверждение на прекращение текущего выполнения программы и перезапуск выполнения программы со стартовой точки.

breakpoint location

С помощью данной команды можно осуществлять установку точек прерывания, в которых GDB приостановит выполнение программы и будет ожидать последующие команды.



В качестве location можно использовать номер строки в файле, который указывается в виде файл:номер_строки, или имя подерограммы.

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

В этом случае можно также указать, что точки прерывания должны быть установлены на всех подпрограммах.

Когда выполняемая программа достигает точки прерывания, ее выполнение приостанавливается, а GDB сигнализирует об этом печатью строки кода, перед которой произошла остановка выполнения программы.




breakpoint exception name

Это специальная форма команды установки точки прерывания, которая позволяет прервать выполнение программы при возбуждении исключения с именем name.

Если имя name не указано, то приостановка выполнения программы осуществляется при возбуждении любого исключения.

print expression

Эта команда печатает значение выражения expression.

GDB нормально обрабатывает основные простые выражения Ады, благодаря чему, выражение expression может содержать вызовы функций, переменные, знаки операций и обращения к атрибутам.

continue

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

step

Выполнить одну строку кода после точки прерывания.

Если следующая инструкция является вызовом подпрограммы, то последующее выполнение будет продолжено внутри (с первой инструкции) вызываемой подпрограммы

next

Выполнить одну строку кода.

Если следующая инструкция является вызовом подпрограммы, то выполнение вызова подпрограммы и возврат из нее осуществляется без остановок.

list

Отобразить несколько строк вокруг текущего положения в исходном тексте.

Практически, более удобно иметь отдельное окно редактирования, в котором открыт соответствующий файл с исходным текстом.

Последующее исполнение этой команды отобразит несколько последующих строк исходного текста.

Эта команда может принимать номер строки в качестве аргумента.

В этом случае она отобразит несколько строк исходного текста вокруг указанной строки.

backtrace

Отобразить обратную трассировку цепочки вызовов.

Обычно эта команда используется для отображения последовательности вызовов, которые привели в текущую точку прерывания.

Отображение содержит по одной строке для каждой записи активации (кадр стека) соответствующей активной подпрограмме.

up

При остановке выполнения программы в точке прерывания, GDB способен отобразить значения переменных, которые локальны для текущего кадра стека (иначе - уровень вложения вызовов).



Команда up может быть использована для анализа содержимого других активных кадров стека, перемещаясь на один кадр стека вверх (от кадра стека вызванной подпрограммы к кадру стека вызвавшей подпрограммы).

down

Выполняет перемещение на один кадр стека вниз.

Действие этой команды противоположно действию команды up.

frame n

Переместиться в кадр стека с номером n.

Значение 0 указывает на кадр стека, который соответствует положению текущей точки прерывания, то есть, вершине стека вызовов.

Показанный выше список команд GDB является ознакомительным, и он очень краток.

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

Примечательно, что многие основные команды имеют сокращенные аббривиатуры.

Например, c - для continue

bt - для backtrace.


Содержание раздела