用 Addr2line 將函式位址解析為函式名

2021-06-19 03:57:38 字數 784 閱讀 1160

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 中進行操...