addr2line 地址转换分析native crash
addr2line -C -f -e ${SOPATH} ${Address}
-C -f //打印错误行数所在的函数名称
-e //打印错误地址的对应路径及行数
${SOPATH} //so库路径
${Address} //需要转换的堆栈错误信息地址,可以添加多个,但是中间要用空格隔开
实例1
例如:
Fatal signal 7 (SIGBUS), code 2, fault addr 0xb23bd4aa in tid 3388 (Binder:3376_2)
pid: 3376, tid: 3388, name: Binder:3376_2 >>> com.android.defcontainer <<<
signal 7 (SIGBUS), code 2 (BUS_ADRERR), fault addr 0xb23bd4aa
r0 b23d1076 r1 02014b50 r2 b23d1048 r3 00000000
r4 00000000 r5 000001fc r6 ae95ba80 r7 00000080
r8 fffeffea r9 00000000 sl ae99f780 fp b23bd4aa
ip ae99f788 sp 9f3a4eb8 lr 0000ffff pc b4be187e cpsr 800b0030
backtrace:
#00 pc 0002487e /system/lib/libandroidfw.so
#01 pc 00021429 /system/lib/libandroidfw.so (_ZN7android9ZipFileRO4openEPKc+20)
执行
addr2line -fCe libandroidfw.so 0002487e 00021429
出现:
ParseZipArchive(ZipArchive*)
/proc/self/cwd/system/core/libziparchive/zip_archive.cc:399
android::ZipFileRO::open(char const*)
/proc/self/cwd/frameworks/base/libs/androidfw/ZipFileRO.cpp:68 (discriminator 1)