Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lection11_компиляторы.doc
Скачиваний:
1
Добавлен:
12.12.2019
Размер:
234.5 Кб
Скачать

Символический отладчик gbd

В качестве символического отладчика для системы Linux применяется программа gbd. Если при запуске какой-либо программы происходит сбой, символический отлад­чик поможет отследить возможную ошибку. Символический отладчик позволяет шаг за шагом выполнять программу и отображает исходный код для каждой исполняемой строки. Можно остановиться на определенной функции и отобразить значения активных переменных. Более того, можно проверить содержимое памяти по заданным адресам, а также содержимое стека.

Для того чтобы иметь возможность воспользоваться символическим отладчиком, необходимо скомпилировать и скомпоновать программу с параметром -g. В следующем примере программа компилируется и подготавливается для работы с символическим отладчиком. После создания исполняемого файла можно приступать к работе с сим­волическим отладчиком.

$ gcc -g main.с io.с

Для вызова символического отладчика необходимо ввести его название, gdb, а также название исполняемого файла. В следующем примере исполняемый файл именуется a.out.

$ gdb a.out

С помощью команды gdb осуществляется переход в среду отладчика. В этом случае командная строка Linux ($) будет заменена командной строкой gdb (gdb). Запуск про­граммы в отладчике выполняется с помощью команды run:

(gdb) run

Если программа содержит операторы fopen или open, то это означает, что в не­которой точке программы будет открыт файл данных. В данном случае отладчик gdb должен располагать именем этого файла данных. При запуске программы с помощью команды run необходимо также указать название этого файла данных, (gdb) run имя_файла

Чтобы завершить работу с отладчиком, необходимо выполнить команду q или quit.

(gdb) quit

Для большинства команд gdb можно использовать однобуквенное сокращение, со­стоящее из первой буквы имени команды. Вместо ввода команды run можно указать одну букву г. Вместо команды выхода из отладчика quit можно ввести букву q, эк­вивалентом команды print является буква р, а для команды next — буква n. Команды отладчика gdb перечислены в табл. 2.

Таблица.2. Команды символического отладчика gdb Выполнение программ в командной строке gdb

г ran Выполнение программы

q quit Выход из среды gdb

Отображение переменных и параметров

р var print var Отображение содержимого переменной

р svar print tvar Отображение адреса переменной

set var = value Присвоение значения переменной во время сеанса gdb

where Отображение трассировки стека, показывающей по-

следовательность вызовов функций с именами и па­раметрами

info locals Отображение объявленных переменных и параметров

Отображение строк

1 номер_строки list номер_строки Отображение строк, начиная с указанного номера

строки

1 функция list функция Отображение номеров строк в функции

1 номер, номер list номер, номер Отображение набора строк Пошаговое и непрерывное выполнение

n next Одношаговое построчное выполнение, с вызовом те-

кущей строки и отображением следующей строки, ко­торая будет вызвана

* step Одношаговое построчное выполнение, с вызовом те-

кущей строки и отображением следующей строки, ко­торая будет вызвана

с cont Продолжение выполнения программы

b break Установка точки останова в текущей строке

break строка Установка точки останова в указанной строке

break функция Установка точки останова в первой строке указанной

функции

info break Вывод всех точек останова

d номер delete номер Удаление точки останова. Требуется указать номер точки останова

delete Удаление всех точек останова

Содержание переменных отображается с помощью команды print. Введите слово print и имя переменной. В следующем примере пользователь отображает значение пе­ременной count.

(gdb) print count

10

С помощью команды where можно отобразить названия функций и параметры функции, вызываемой в некоторой точке программы. В следующем примере выполня­ется функция calc. В результате ввода команды where отображаются функции main и calc и значения их параметров.

(gdb) where

#3 calc(newcost = 2.0) at calc.c:25

#1 main () at main.c:19

#2 0x8000455 in crt dummy___ ()

Можно получить перечень всех переменных и параметров, определенных в функции. Команда info locals выведет текущие значения всех переменных и параметров. В следующем примере пользователь выводит на экран значения переменных.

(gdb) info locals

cost = 2

name = "Richard\000\000" count = 10 count2 = 10

nameptr = 0x8000570 "petersen"

countptr = (int *) Oxbffffde8

С помощью команды break можно установить в программе контрольные точки. При достижении контрольной точки программа прекращает работу. После этого можно продолжить выполнение программы в пошаговом режиме с помощью команд next или step. При необходимости можно продолжить выполнение программы до следую­щей контрольной точки. В этих целях применяется команда cont.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]