Unix Man (Справочное руководство)



SDB(1)


SDB(1)

НАЗВАНИЕ


sdb - символьный отладчик

СИНТАКСИС

sdb [-W] [-w] [объектный_файл [образ_памяти [список_каталогов]]]

ОПИСАНИЕ


По команде sdb запускается символьный отладчик, предназначенный для отладки программ на языках C и Фортран 77. Его можно использовать для анализа объектных файлов и образа памяти, а также для выполнения программ под управлением пользователя.

объектный_файл - это файл с выполняемой программой, откомпилированной с опцией -g (отладка). Если она не была компилирована с опцией -g, возможности символьной отладки ограничиваются, но объектный_файл можно анализировать, равно как можно отлаживаться на уровне машинных команд и процедур. По умолчанию объектный_файл - a.out.

Образ_памяти - это файл с образом памяти, полученный после завершения выполнения объектного_файла. По умолчанию имя образа_памяти есть core. Образ_памяти не обязан присутствовать; знак - на его месте ведет к игнорированию образа.

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

Команда sdb обрабатывает следующие опции:

-W -w
Если файлы с исходными текстами отсутствуют или оказываются новее, чем объектный_файл, выдается предупреждение. Опция -W подавляет проверку и, соответственно, выдачу предупреждения.
Разрешение изменять объектный_файл и образ_памяти.

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

При отладке имена переменных пишутся точно так же, как в языках C или Фортран 77. Доступ к переменным, локальным для некоторой процедуры, осуществляется посредством конструкции процедура:переменная. Если имя процедуры не указано, используется процедура, содержащая текущую строку. Можно ссылаться на элемент структуры как на структура.элемент; или, посредством указателей, как на указатель->элемент; ссылка на элемент массива выглядит как массив[номер]. Переход от указателя к указуемому объекту записывается как указатель[0]. Допускаются комбинации этих конструкций. Доступ к переменным из общих блоков Фортрана осуществляется аналогично обращению к элементам структур с заменой имени структуры на имя общего блока. Переменные из непоименованного общего блока записываются в виде .переменная.

Можно также указывать переменную, задав ее адрес. Допускается использование всех видов целых констант, принятых в языке C, так что адреса могут задаваться в десятичном, восьмеричном и шестнадцатеричном виде.

Если адрес указан на месте имени структурной переменной, то шаблоном структуры будет шаблон последней из структур, к которой выполнялся доступ посредством sdb. Вообще, sdb рассматривает структуру как набор переменных; при указании имени структуры выводятся все ее элементы. Исключение составляет вывод адресов: выводится адрес начала структуры, а не отдельных ее элементов.

Элементы многомерных массивов записываются в виде массив[номер][номер]..., или массив[номер,номер,...]. На месте номера может употребляться также конструкция номер;номер, задающая диапазон изменения индекса ("вырезку" из массива); * обозначает весь допустимый диапазон данного индекса. Если символы * являются последними в списке индексов, их можно опустить. При выдаче адресов, как и в случае структур, сообщается адрес всего массива или вырезки, но не адрес каждого из элементов. Многомерные массивы-аргументы подпрограмм на языке Фортран 77 не могут быть выведены как массивы, так как они являются указателями, значения которых есть адреса массивов. Сам массив может быть получен в символическом виде из вызывающей функции. Кроме того, следует учитывать, что sdb отсчитывает индексы от нуля.

Ссылка на конкретный экземпляр переменной из стека делается в виде процедура:переменная,номер. При этом могут использоваться все описанные ранее способы доступа к элементам структур и массивов. Номер - это номер появления процедуры в стеке, считая ближайший к вершине экземпляр первым. Если процедура не указана, используется та, что выполняется в данный момент.

Номера строк в исходном тексте задаются в виде имя_файла:номер или процедура:номер. В обоих случаях номер отсчитывается от начала файла. По умолчанию используется текущий файл. Если не указан номер строки, то используется первая строка файла или процедуры.

Можно оперировать не только со строками исходного текста, но и с адресами, используя конструкцию адрес:.

Пока под управлением sdb выполняется процесс (см. ниже команды r и k), все адреса относятся к программе процесса; в другие моменты они относятся к объектному_файлу или образу_памяти.

Адресация в файле





Содержание  Назад  Вперед