使⽤addr2line命令定位到⾏号解析.so的⽂件⼀、背景
最新遇到crash 的问题 ,这⾥来简单说明怎么使⽤addr2line 命令来定位问题
⾸先获取到tombstone log
框架结构的特点找到出现的位置如下log
Process Name: 'UNKNOWN'
繁星春水思维导图Thread Name: ''
pid: 3124, tid: 3124 >>> UNKNOWN <<<
killed by pid: 1, comm: UNKNOWN, uid: 0.
signal 15 (SIGTERM), code 0 (?), fault addr --------
r0 fffffffc r1 ffd0e538 r2 00000010 r3 00007b20
r4 00000000 r5 00000008 r6 00000000 r7 0000015a
r8 f2ab269c r9 00000008 10 f2ab2650 fp 00007b20
ip ffd0e4d0 sp ffd0e4c0 lr f2e33339 pc f2e605a0 cpsr 20070010
#00 pc 000485a0 /system/lib/libc.so
#00 pc 000485a0 /system/lib/libc.so
#01 lr 0001b339 /system/lib/libc.so
-
-- --- ---
[DEBUG] Read lf maps instead! map: 0x0
00 pc 000485a0 /system/lib/libc.so (__epoll_pwait+20)
01 pc 0001b337 /system/lib/libc.so (epoll_pwait+38)
--- --- --- ---
从上⾯我们可以看到出现问题的在libc.so 这个库⽂件
⼆、找到对应的库⽂件
⼀版系统编译的这些库都会放到
\out\target\product\product_name\system\lib\下⾯
对应的在out\target\product\product_name\symbols\system\lib\也有⼀个
我们需要解析是在这个⽬录下的out\target\product\product_name\symbols\system\lib\的库⽂件
三、使⽤addr2line⼯具分析
这个⼯具在不同的android 平台上,放置的位置和名称有些区别
anroid 7.0
学做小点心
prebuilts\gcc\linux-x86\aarch64\aarch64-linux-android-4.9\bin\aarch64-linux-android-addr2line prebuilts\gcc\darwin-x86\aarch64\aarch64-linux-android-4.9\bin\aarch64-linux-android-addr2line
如:android 8.1 位置如下
prebuilts\gcc\linux-x86\aarch64\aarch64-linux-android-4.9\bin\aarch64-linux-android-addr2line android 9.0 位置在
\prebuilts\gcc\linux-x86\aarch64\aarch64-linux-android-4.9\bin\aarch64-linux-android-addr2line
我们今天分析是在8.1上⾯对应的位置为:
prebuilts\gcc\linux-x86\aarch64\aarch64-linux-android-4.9\bin\aarch64-linux-android-addr2line
四、操作步骤
a、我们以andriod 8.1 的为案例:
济南住宿
⾸先切换到代码的根⽬录:
如 anroid_home#
b、使⽤命令定位
使⽤命令 aarch64-linux-android-addr2line -f -e +库名称 +地址
上⾯的地址为: 000485a0
000485a0 000485a0巨胜
0001b339 0001b337
c、结果显⽰
$ ./prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9/bin/aarch64-linux-android-addr2line -f -e out/target/product/msm8953_64/symbols/system/lib/libc.so 000485a0
__epoll_pwait
/proc/lf/cwd/bionic/libc/arch-arm/syscalls/__epoll_pwait.S:16
./prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9/bin/aarch64-linux-android-addr2line -f -e out/target/product/msm8953_64/symbols/system/lib/libc.so 0001b339
epoll_pwait
bionic/libc/bionic/epoll_pwait.cpp:?
./prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9/bin/aarch64-linux-android-addr2line -f -e out/target/product/msm8953_64/symbols/system/lib/libc.so 0001b337
悟空去哪儿epoll_pwait
bionic/libc/bionic/epoll_pwait.cpp:42
五、结果分析
通解析库⽂件--找源码的位置-分析源码
经营管理
找出问题的根源。
诺基亚系列