Использование gdb для преобразования адресов в строки

У меня есть трассировка стека, сгенерированная зачищенным приложением, которая выглядит так:

 *** 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

Я предполагаю, что это потому, что адрес находится в одной из общих библиотек, но как я могу узнать, в какой из них?

34
задан Basile Starynkevitch 17 December 2011 в 16:01
поделиться