android用符号表定位问题
生活随笔
收集整理的這篇文章主要介紹了
android用符号表定位问题
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
有時候我們出現的軟重啟問題,只有段錯誤,只給你一個錯誤地址,沒有具體信息,像這種問題我們應該怎么分析呢:
我們先舉個例子:
...F DEBUG : pid: 11028, tid: 11046, name: android.bg >>> system_server <<< ...E DEBUG : AM write failed: Broken pipe 03-15 10:53:31.636570 8989 8989 F DEBUG : signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x0 03-15 10:53:31.691722 8989 8989 F DEBUG : r0 afef2038 r1 00000001 r2 00000001 r3 0000001c 03-15 10:53:31.691869 8989 8989 F DEBUG : r4 a24f74a0 r5 00000000 r6 afef2038 r7 abffdcc0 03-15 10:53:31.691947 8989 8989 F DEBUG : r8 00000001 r9 adc55600 sl 00000000 fp 12fed3c0 03-15 10:53:31.692033 8989 8989 F DEBUG : ip 12fed3dc sp a24f7478 lr b3ee05a1 pc 00000000 cpsr 600f0010 03-15 10:53:31.695701 8989 8989 F DEBUG : ...F DEBUG : backtrace: ...8989 8989 F DEBUG : #00 pc 00000000 <unknown> ...8989 8989 F DEBUG : #01 pc 0001359f /system/lib/libandroid_servers.so ...8989 8989 F DEBUG : #02 pc 00c05d1d /data/dalvik-cache/arm/system@framework@services.jar@classes.dex (offset 0x7cb000)像這個問題0001359f這個地址出錯了,因為它的下個地址為0,說明空指針了,當然導致調用出錯了。最后導致system_server重啟
像這種問題我們應該怎么解決呢?
我們應該使用addr2line這個工具,將001359f這個地址找到對應的代碼,這個時候就需要符號表。
addr2line -e out/target/product/lte26007/symbols/system/lib/libandroid_servers.so -f 0001359f具體如何使用addr2line可以使用man addr2line來查詢
這樣我們就有如下結果:
frameworks/base/services/core/jni/com_android_server_location_GpsLocationProvider.cpp:762就知道了具體出錯在哪里了。
總結
以上是生活随笔為你收集整理的android用符号表定位问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JS文字转语音技术实现
- 下一篇: 如何在图片上面装一个透明的遮罩层