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, где искать символы отладки. Больше можно найти здесь.