У меня есть трассировка стека, созданная разделенным приложением, которая выглядит так:
*** 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
Я предполагаю, что адрес находится в одной из разделяемых библиотек, но как я могу узнать, в каком из них?