kernel panic 時通常會打出call trace 函式相關呼叫資訊,例如
[<0000000000000000>] sys_epoll_wait+0x2a0/0x324
通過vmlinux和nm/addr2line可以判斷出問題時死掉的函式具體位置
過程如下:
arm-eabi-nm ******/vmlinux |grep epoll_wait
該命令執行後,可獲取sys_epoll_wait命令的符號位址,如下c02b2f28tsys_epoll_wait
2)然後,計算位址
例如 [<0000000000000000>] sys_epoll_wait+0x2a0/0x324
則計算後的位址c02b2f28 + 2a0 = 目標位址。而對於kernel來說都是通過vmlinux來獲取的,這時再執行命令可轉換函式名
./aarch64-linux-android-addr2line -cfe /***x/vmlinux [目標位址]
3)根據計算出的函式找到code中的具體實現,查詢報錯原因。
備註:
Kernel下的DMA 位址對映詳解
在網上檢視了各路大牛的dma資料,但一直未解決我的問題和疑問 dma的抽象層,沒有講到具體,比如這個dma map single這個函式。這個 phys addr到底是從 來的,是如何受到保護的,以及這個對映關係和dma unmap single 取消對映之間,是否涉及到phys addr的關聯。x...
ip位址轉換數字函式 iton IP位址轉換函式
在ascii字串 192.168.0.99 與網路位元組序的二進位制值間轉換位址。涉及函式的標頭檔案為 include 一 只適用於ipv4協議的函式 int inet aton const char string,struct in addr addr 函式成功,返回值1,否則返回零。將strin...
位址轉換簡介
位址轉換的原理 因為不同的內部網路中的計算機可以採用 相同的私有位址,所以如果內部網網路的計算機在同 internet 中的計算機通訊時,必須將自己的私有位址轉換為公有位址,否則可能會同其他內部網路 中的計算機產生衝突。因為位址資源日漸稀少 所以在實際的應用中,可供轉換的公有位址往往少於內部網路中的...