使用下面的方法进行出错位置定位,前提是可以在Log中找到出错地址
./prebuilt/linux-x86/toolchain/arm-eabi-4.2.1/bin/arm-eabi-addr2line -e out/target/product/kunlun/symbols/system/lib/libviatelecom-withuim-ril.so -f 2868
2868 是main log打出的地址,类似下面的一段log
11-09 12:14:46.174 I/DEBUG ( 1367): #00 pc 00015ca4 /system/lib/libc.so
11-09 12:14:46.174 I/DEBUG ( 1367): #01 pc 00013614 /system/lib/libc.so
11-09 12:14:46.174 I/DEBUG ( 1367): #02 pc 000144da /system/lib/libc.so
11-09 12:14:46.174 I/DEBUG ( 1367): #03 pc 00002868 /system/lib/libril.so
11-09 12:14:46.174 I/DEBUG ( 1367): #04 pc 0000a07c /system/lib/libril.so
11-09 12:14:46.174 I/DEBUG ( 1367): #05 pc 00004f02 /system/lib/libril.so
11-09 12:14:46.182 I/DEBUG ( 1367): #06 pc 0000542a /system/lib/libril.so
11-09 12:14:46.182 I/DEBUG ( 1367): #07 pc 00005aaa /system/lib/libril.so
11-09 12:14:46.182 I/DEBUG ( 1367): #08 pc 00006570 /system/lib/libril.so
11-09 12:14:46.182 I/DEBUG ( 1367): #09 pc 00005ede /system/lib/libril.so
11-09 12:14:46.182 I/DEBUG ( 1367): #10 pc 000118e4 /system/lib/libc.so
11-09 12:14:46.182 I/DEBUG ( 1367): #11 pc 000114b0 /system/lib/libc.so
上面其实是出错时候的调用堆栈,那么可以看到 libril.so 的函数 的地址 2868处出错了,执行后
root@desktop-ubuntu:# ./prebuilt/linux-x86/toolchain/arm-eabi-4.2.1/bin/arm-eabi-addr2line -e out/target/product/productname/symbols/system/lib/libril.so -f 2868
oemRequestSendCdmaSMS
hardware/xxx/xxxx/xxxxxx/mmmmmmmm.c:462
则明确给出了出错的地方,mmmmmmmm.c 的 462 行~