GDB - загрузка отладочной информации из внешних файлов ".sym"

Я пытаюсь выполнить посмертный анализ разбитого двоичного файла "TestApp" в системе Linux.

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

/usr/public/target

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

/usr/public/target/sbin/TestApp
/usr/public/target/lib/TestAppLib.so
/usr/public/target/usr/lib/TestAppAPILib.so

Автоматизированный процесс сборки извлекает отладочную информацию из двоичных файлов и сохраняет их во внешних файлах символов в следующих разделах:

/usr/public/target_external_symbols

Таким образом, символьная информация для вышеупомянутых двоичных файлов будет существовать в файлах с именем:

/usr/public/target_external_symbols/sbin/TestApp.sym
/usr/public/target_external_symbols/lib/TestAppLib.so.sym
/usr/public/target_external_symbols/usr/lib/TestAppAPILib.so.sym

Как мне заставить GDB знать о существовании этих внешних символов и загружать их?

Я обычно вызываю GDB через:

gdb TestApp TestApp.core

Я ссылался на другие статьи о создании теста .gdbinit файл и передать его в GDB через -command аргумент, но это не похоже на работу. Каждый раз, когда я пытаюсь получить обратную трассировку из моего основного файла, я получаю указание от GDB, что он не может открыть символы отладки. Любая помощь в решении этого приветствуется.

(gdb) info shared
From        To          Syms Read   Shared Object Library
0x78000000  0x780061e8  Yes (*)     /usr/public/target/lib/TestAppLib.so
0x78010000  0x7806e60c  Yes (*)     /usr/public/target/usr/lib/TestAppAPILib.so
0x78070000  0x78091d2c  Yes (*)     /usr/public/target/lib/libm.so.2
(*): Shared library is missing debugging information.

Спасибо.

1 ответ

Решение

Есть команды set debug-file-directory, symbol-file а также add-symbol-file загрузить отладочные символы из сеанса GDB. Для последнего может потребоваться адрес, по которому общая библиотека была загружена в память.

Возможно, в процессе сборки в ваши двоичные файлы были добавлены отладочные ссылки gnu. Это будет означать, что в исполняемых файлах есть закодированный путь, который указывает GDB, где искать символы отладки. Больше можно найти здесь.

Другие вопросы по тегам