Команды, описанные в этой главе, позволяют вам получить информацию о символах (именах переменных, функций и типов), определенных в вашей программе. Эта информация присуща тексту вашей программы и не изменяется при ее выполнении. GDB находит эту информацию в таблице символов вашей программы, в файле, определенном при его вызове (см. раздел 2.1.1 Выбор файлов), или посредством одной из команд управления файлами (см. раздел 12.1 Команды для задания файлов).
Иногда вам может потребоваться сослаться на символы, содержащие
необычные знаки, которые GDB обычно трактует как разделители
слов. Наиболее часто это встречается при ссылках на статические
переменные в других исходных файлах (см. раздел 8.2 Переменные программы). Имена файлов записаны в объектных файлах как отладочные
символы, но GDB обычно производит разбор типичного имени файла, например
`foo.c', как три слова: `foo' .
c
. Чтобы GDB
идентифицировал `foo.c' как одно слово, заключите его в одинарные
кавычки; например,
p 'foo.c'::x
ищет значение x
в области видимости файла `foo.c'.
info address символ
whatis выраж
whatis
$
, последней записи в истории значений.
ptype имя-типа
ptype выраж
ptype
ptype
отличается от
whatis
тем, что выводится детальное описание, а не только имя
типа.
Например, для такого описания переменной:
struct complex {double real; double imag;} v;эти две команды выведут следующее:
(gdb) whatis v type = struct complex (gdb) ptype v type = struct complex { double real; double imag; }Как и
whatis
, использование ptype
без параметра относится
к типу $
, последней записи в истории значений.
info types рег-выр
info types
value
, а `i type ^value$' выдает информацию
только о типах с полным именем value
.
Эта команда отличается от ptype
следующим: во-первых, как и
whatis
, она не выводит детального описания; во-вторых, она
перечисляет все исходные файлы, где определен тип.
info source
info sources
info functions
info functions рег-выр
step
;
`info fun ^step' находит функции с именами, начинающимися со step
.
info variables
info variables рег-выр
set symbol-reloading on
set symbol-reloading off
symbol-reloading
в состоянии off
, так как
иначе GDB может уничтожить символы пpи сборке больших программ,
которые могут содеpжать несколько модулей с одинаковым именем (из разных
каталогов или библиотек).
show symbol-reloading
on
или off
.
set opaque-type-resolution on
struct
, class
или union
-- например, struct MyType *
-- то есть,
используется в одном исходном файле, хотя полное описание struct
MyType
находится в другом исходном файле. По умолчанию установлено в
on
.
Изменения в установке этой подкоманды не вступят в силу, пока не будут
загружены символы для какого-нибудь файла.
set opaque-type-resolution off
{<no data fields>}
show opaque-type-resolution
maint print symbols имя-файла
maint print psymbols имя-файла
maint print msymbols имя-файла
info sources
, чтобы
определить, какие это файлы. Если же вы используете `maint print
psymbols', дамп показывает информацию о тех символах, о которых
GDB имеет лишь частичную информацию, то есть символы определены
в файлах, которые GDB только просмотрел, но не прочитал
полностью. Наконец, `maint print msymbols', выводит только
минимальную информацию о символах, требуемую для каждого
объектного файла, из которых GDB пpочитал какие-либо символы.
См. раздел 12.1 Команды для задания файлов, где обсуждается, как
GDB считывает символы (в описании symbol-file
).