使用addr2line工具將C層的地址轉(zhuǎn)成具體的錯(cuò)誤行號(hào)

類似以下日志:

2022-07-28 08:57:53.614 8856-8856/? A/DEBUG: *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
2022-07-28 08:57:53.614 8856-8856/? A/DEBUG: Build fingerprint: 'Verizon/gts4lltevzw/gts4lltevzw:10/QP1A.190711.020/T837VVRU5CUE2:user/release-keys'
2022-07-28 08:57:53.614 8856-8856/? A/DEBUG: Revision: '7'
2022-07-28 08:57:53.614 8856-8856/? A/DEBUG: ABI: 'arm64'
2022-07-28 08:57:53.618 8856-8856/? A/DEBUG: Timestamp: 2022-07-28 08:57:53+0800
2022-07-28 08:57:53.618 8856-8856/? A/DEBUG: pid: 4867, tid: 4867, name: exe.eginedemo>>> com.exe.eginedemo<<<
2022-07-28 08:57:53.618 8856-8856/? A/DEBUG: uid: 10248
2022-07-28 08:57:53.618 8856-8856/? A/DEBUG: signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x656e69676e4565
2022-07-28 08:57:53.618 8856-8856/? A/DEBUG:     x0  0000000000000000  x1  0000000000000000  x2  0000000000000000  x3  0000000000000000
2022-07-28 08:57:53.618 8856-8856/? A/DEBUG:     x4  0000000000000000  x5  0000007fc34a93d8  x6  0000007cdbf74618  x7  0000007cdbf74618
2022-07-28 08:57:53.618 8856-8856/? A/DEBUG:     x8  00656e69676e4565  x9  00656e69676e4565  x10 0000000000000000  x11 0000000000000000
2022-07-28 08:57:53.618 8856-8856/? A/DEBUG:     x12 0000000009950238  x13 546e69616d286572  x14 0000000000000030  x15 0000000000000010
2022-07-28 08:57:53.618 8856-8856/? A/DEBUG:     x16 0000007cdc136f80  x17 0000007d71042f70  x18 0000000000000001  x19 0000007d72e75000
2022-07-28 08:57:53.618 8856-8856/? A/DEBUG:     x20 0000000000000000  x21 0000007d72e75000  x22 0000007fc34a9c40  x23 0000007d70d5e172
2022-07-28 08:57:53.619 8856-8856/? A/DEBUG:     x24 0000000000000008  x25 0000007d73009020  x26 0000007d72e750b0  x27 0000000000000002
2022-07-28 08:57:53.619 8856-8856/? A/DEBUG:     x28 0000007fc34a99d0  x29 0000007fc34a96a0
2022-07-28 08:57:53.619 8856-8856/? A/DEBUG:     sp  0000007fc34a9660  lr  0000007cdbeb1354  pc  0000007cdbeb1378
2022-07-28 08:57:53.874 8856-8856/? A/DEBUG: backtrace:
2022-07-28 08:57:53.875 8856-8856/? A/DEBUG:       #00 pc 000000000014b378  /data/app/com.exe.eginedemo-eSDAalHRX4Z1y3FceKgZfg==/base.apk!libEngine.so (offset 0x1d6000) 
2022-07-28 08:57:53.875 8856-8856/? A/DEBUG:       #01 pc 000000000014b814  /data/app/com.exe.eginedemo-eSDAalHRX4Z1y3FceKgZfg==/base.apk!libEngine.so (offset 0x1d6000) 
2022-07-28 08:57:53.875 8856-8856/? A/DEBUG:       #02 pc 000000000014aef0  /data/app/com.exe.eginedemo-eSDAalHRX4Z1y3FceKgZfg==/base.apk!libEngine.so (offset 0x1d6000) 
2022-07-28 08:57:53.875 8856-8856/? A/DEBUG:       #03 pc 00000000000e0c20  /data/app/com.exe.eginedemo-eSDAalHRX4Z1y3FceKgZfg==/base.apk!libEngine.so (offset 0x1d6000) 
2022-07-28 08:57:53.875 8856-8856/? A/DEBUG:       #04 pc 0000000000154dc0  /data/app/com.exe.eginedemo-eSDAalHRX4Z1y3FceKgZfg==/base.apk!libEngine.so (offset 0x1d6000) 
2022-07-28 08:57:53.875 8856-8856/? A/DEBUG:       #05 pc 0000000000158174  /data/app/com.exe.eginedemo-eSDAalHRX4Z1y3FceKgZfg==/base.apk!libEngine.so (offset 0x1d6000)
2022-07-28 08:57:53.875 8856-8856/? A/DEBUG:       #06 pc 00000000001562b0  /data/app/com.exe.eginedemo-eSDAalHRX4Z1y3FceKgZfg==/base.apk!libEngine.so (offset 0x1d6000) 
2022-07-28 08:57:53.875 8856-8856/? A/DEBUG:       #07 pc 0000000000008ee4  /data/app/com.exe.eginedemo-eSDAalHRX4Z1y3FceKgZfg==/base.apk!libinkEngineNative.so (offset 0x11000)

查找步驟:
1、先配置addr2line工具環(huán)境:高級(jí)系統(tǒng)設(shè)置 -> 環(huán)境變量 -> path -> 新建
添加指令:arm-linux-androideabi-addr2line ---- 這個(gè)主要是用于查armabiv7a包的:

{sdk}\ndk-bundle\toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64\bin

添加 指令:aarch64-linux-android-addr2line --- 這個(gè)主要是用于查arm64-v8a包的:

   {sdk}\ndk-bundle\toolchains\aarch64-linux-android-4.9\prebuilt\windows-x86_64\bin

若出現(xiàn)使用addr2line出現(xiàn)File format not recognized錯(cuò)誤提示是因?yàn)槠脚_(tái)包不對(duì)應(yīng),根據(jù)平臺(tái)so切換上方的指令即可。
(多個(gè)地址用空格隔開)

arm-linux-androideabi-addr2line -f -e {so庫的絕對(duì)路徑} {address}
aarch64-linux-android-addr2line -f -e {so庫的絕對(duì)路徑} {address}

{address} 可以輸入多個(gè),已空格分開即可。address是上方日志中的#00 pc 之后的數(shù)值

查找出來的效果如下圖:


screenshot-20220803-115716.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容