У меня есть трассировка стека, сгенерированная зачищенным приложением, которая выглядит так:
*** Check failure stack trace: ***
@ 0x7f0e442d392d (unknown)
@ 0x7f0e442d7b1f (unknown)
@ 0x7f0e442d7067 (unknown)
@ 0x7f0e442d801d (unknown)
@ 0x7f0e457c55e6 (unknown)
@ 0x7f0e457c5696 (unknown)
@ 0x4e8765 (unknown)
@ 0x4a8b43 (unknown)
@ 0x7f0e43197ced (unknown)
@ 0x4a6889 (unknown)
И у меня есть не зачищенная версия исполняемого файла и всех его библиотек (скомпилированная с отладочной информацией). Но как я могу перевести адрес в файлы и номера строк?
Вот что я пробовал:
gdb
set solib-absolute-prefix /path/to/non-stripped/edition/of/root/filesystem/sysroot/
file /path/to/non-stripped/edition/of/root/filesystem/sysroot/usr/bin/my-buggy-app
info line *0x7f0e457c5696
Когда я ввожу команду file, она загружает только символы из файла, а не все используемые библиотеки. Есть ли способ сделать это?
Команда "info line" говорит:
Нет информации о номере строки для адреса 0x7f0e442d801d
Я предполагаю, что это потому, что адрес находится в одной из общих библиотек, но как я могу узнать, в какой из них?