addr2line 工具(它是標準的 gnu binutils 中的一部分)是乙個可以將指令的位址和可執行映像轉換成檔名、函式名和源**行數的工具。
在可執行程式中都包含有除錯資訊,其中很重要的乙份資料就是程式源程式的行號和編譯後的機器**之間的對應關係line number table。dwarf格式的line number table是一種高度壓縮的資料,儲存的是**前後兩行的差值,在解析除錯資訊時,需要按照規則在記憶體裡重建line number table才能使用。
line number table儲存在可執行程式的.debug_line域,使用命令readelf 可以輸出dwarf的除錯資訊
$ readelf -w test
例1[54106.016179] test[8352] trap divide error ip:400506 sp:7fff2add87e0 error:0 in test[400000+1000]
$ addr2line -e test 400506
例2$ cat >> test.c
#include
int main()
$ gcc -wl,-map=test.map -g -o test test.c
$ grep main test.map
0x08048258 __libc_start_main@@glibc_2.0
0x08048258 main
$ addr2line 0x08048258 -e test -f
main
/home/mtj/test/test.c:4
使用 Addr2line 將函式位址解析為函式名
用 addr2line 將函式位址解析為函式名 addr2line 工具 它是標準的 gnu binutils 中的一部分 是乙個可以將指令的位址和可執行映像轉換成檔名 函式名和源 行數的工具。這種功能對於將跟蹤位址轉換成更有意義的內容來說簡直是太棒了。要了解這個過程是怎樣工作的,我們可以試驗乙個簡...
使用 Addr2line 將函式位址解析為函式名
用 addr2line 將函式位址解析為函式名 addr2line 工具 它是標準的 gnu binutils 中的一部分 是乙個可以將指令的位址和可執行映像轉換成檔名 函式名和源 行數的工具。這種功能對於將跟蹤位址轉換成更有意義的內容來說簡直是太棒了。要了解這個過程是怎樣工作的,我們可以試驗乙個簡...
用 Addr2line 將函式位址解析為函式名
addr2line 工具 它是標準的 gnu binutils 中的一部分 是乙個可以將指令的位址和可執行映像轉換成檔名 函式名和源 行數的工具。這種功能對於將跟蹤位址轉換成更有意義的內容來說簡直是太棒了。要了解這個過程是怎樣工作的,我們可以試驗乙個簡單的互動式的例子。我直接從 shell 中進行操...