1.将ndk中的arm-linux-androideabi-addr2line可执行文件的路径加入配置文件~/.bashrc中,例如:
export PATH=$PATH:~/dlna/android-ndk-r6b/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin
2.使配置生效:source ~/.bashrc
3.使用工具。例如:arm-linux-androideabi-addr2line -C -f -e ~/workspace/DLNA/libs/armeabi/libctrlpt.so 0003deb4
其中,0003deb4为堆栈信息中pc的值。
如下:通过logcat看到如下信息
01-02 12:57:57.750 I/DEBUG ( 104): backtrace:
01-02 12:57:57.750 I/DEBUG ( 104): #00 pc 00007822 /system/lib/libdayo-gm500-ril.so
01-02 12:57:57.750 I/DEBUG ( 104): #01 pc 000023ef /system/lib/libril.so
01-02 12:57:57.750 I/DEBUG ( 104): #02 pc 00005fb9 /system/lib/libril.so
01-02 12:57:57.750 I/DEBUG ( 104): #03 pc 0000e3d8 /system/lib/libc.so (__thread_entry+72)
01-02 12:57:57.750 I/DEBUG ( 104): #04 pc 0000dac4 /system/lib/libc.so (pthread_create+160)
01-02 12:57:57.760 I/DEBUG ( 104):
01-02 12:57:57.760 I/DEBUG ( 104): stack:
01-02 12:57:57.760 I/DEBUG ( 104): 405c3c98 00000014
01-02 12:57:57.760 I/DEBUG ( 104): 405c3c9c 00000018
01-02 12:57:57.760 I/DEBUG ( 104): 405c3ca0 c0000000
01-02 12:57:57.760 I/DEBUG ( 104): 405c3ca4 417685f0 [heap]
01-02 12:57:57.760 I/DEBUG ( 104): 405c3ca8 4011a371 /system/lib/libril.so (RIL_onRequestComplete)
01-02 12:57:57.760 I/DEBUG ( 104): 405c3cac 401c34ec
01-02 12:57:57.760 I/DEBUG ( 104): 405c3cb0 00000001
01-02 12:57:57.760 I/DEBUG ( 104): 405c3cb4 4009a813 /system/lib/libc.so (dlfree+34)
01-02 12:57:57.760 I/DEBUG ( 104): 405c3cb8 417685f0 [heap]
01-02 12:57:57.760 I/DEBUG ( 104): 405c3cbc 38d1e63a
01-02 12:57:57.760 I/DEBUG ( 104): 405c3cc0 417685f0 [heap]
01-02 12:57:57.760 I/DEBUG ( 104): 405c3cc4 00000000
01-02 12:57:57.760 I/DEBUG ( 104): 405c3cc8 400d4228
01-02 12:57:57.760 I/DEBUG ( 104): 405c3ccc 401a3779 /system/lib/libdayo-gm500-ril.so
01-02 12:57:57.760 I/DEBUG ( 104): 405c3cd0 df0027ad
01-02 12:57:57.760 I/DEBUG ( 104): 405c3cd4 00000000
01-02 12:57:57.760 I/DEBUG ( 104): #00 405c3cd8 00000068
01-02 12:57:57.760 I/DEBUG ( 104): 405c3cdc 00000001
01-02 12:57:57.760 I/DEBUG ( 104): 405c3ce0 4011cb74 /system/lib/libril.so
01-02 12:57:57.760 I/DEBUG ( 104): 405c3ce4 00000000
01-02 12:57:57.760 I/DEBUG ( 104): 405c3ce8 00000000
01-02 12:57:57.760 I/DEBUG ( 104): 405c3cec 00000000
01-02 12:57:57.760 I/DEBUG ( 104): 405c3cf0 00000000
01-02 12:57:57.760 I/DEBUG ( 104): 405c3cf4 401af004 /system/lib/libdayo-gm500-ril.so
01-02 12:57:57.760 I/DEBUG ( 104): 405c3cf8 00000000
01-02 12:57:57.760 D/dalvikvm( 493): GC_FOR_ALLOC freed 149K, 16% free 7817K/9200K, paused 67ms, total 69ms
01-02 12:57:57.760 I/DEBUG ( 104): 405c3cfc 0000000a
01-02 12:57:57.760 I/DEBUG ( 104): 405c3d00 401ab7aa /system/lib/libdayo-gm500-ril.so
01-02 12:57:57.760 I/DEBUG ( 104): 405c3d04 401ab7c2 /system/lib/libdayo-gm500-ril.so
01-02 12:57:57.760 I/DEBUG ( 104): 405c3d08 00000008
01-02 12:57:57.760 I/DEBUG ( 104): 405c3d0c 400d4228
01-02 12:57:57.760 I/DEBUG ( 104): 405c3d10 41740370 [heap]
01-02 12:57:57.760 I/DEBUG ( 104): 405c3d14 00000000
01-02 12:57:57.760 I/DEBUG ( 104): ........ ........
01-02 12:57:57.760 I/DEBUG ( 104): #01 405c3e78 4011f800 /system/lib/libril.so
01-02 12:57:57.760 I/DEBUG ( 104): 405c3e7c 4011afbb /system/lib/libril.so
01-02 12:57:57.760 I/DEBUG ( 104): #02 405c3e80 00000aba
01-02 12:57:57.760 I/DEBUG ( 104): 405c3e84 4011d1ba /system/lib/libril.so
..........
gaoshen@dayo-la:~/work/allwinner/A23_201310281051_RDAFM/A23_201310281051/android/out/target/product/polaris-p1/obj/SHARED_LIBRARIES/libdayo-gm500-ril_intermediates/LINKED$ arm-linux-androideabi-addr2line 00007822 -e libdayo-gm500-ril.so
/home/gaoshen/work/allwinner/A23_201310281051_RDAFM/A23_201310281051/android/hardware/ril/reference-ril/reference-ril.c:4564
找到崩的地方。