我有一個精簡應用程序,它看起來像這樣產生的堆棧跟蹤:使用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
當我在文件中鍵入命令只是將其從文件,而不是其使用的所有庫加載符號。有沒有辦法做到這一點?
「信息線」命令說:
用於地址沒有行號信息0x7f0e442d801d
這我假設是因爲該地址在共享庫中的一個,但怎麼也我知道他們中的哪一個?
['addr2line'](http://linuxcommand.org/man_pages/addr2line1.html)? – 2011-12-17 16:10:27
@ another.anon.coward Year,我試過,但我不知道如何查找哪個文件,因爲地址指向共享庫。 – Allan 2011-12-17 17:24:07
@Allan:您可以使用'info sharedlibrary'命令來知道哪個共享庫的地址爲0x7f0e442d801d。 – ks1322 2011-12-17 19:00:57