android 上除錯動態庫方法

2021-08-26 07:07:41 字數 1543 閱讀 2491

如果 android應用程式 包含動態庫呼叫,程式異常退出後 給出一堆位址,

如i/debug ( 841): signal 11 (sigsegv), fault addr deadbaad

i/debug ( 841): r0 00000000 r1 afd1498d r2 00000027 r3 00000070

i/debug ( 841): r4 afd42328 r5 00000000 r6 00000000 r7 4e6fae30

i/debug ( 841): r8 00100000 r9 a811c2f9 10 4e5fb000 fp 0013cdb8

i/debug ( 841): ip 0000173c sp 4e6fa9d8 lr deadbaadpc afd11f40cpsr 60000030

i/debug ( 841): d0 400000003eaaaaab d1 3ff0000041f00000

i/debug ( 841): d2 0000000050baf6de d3 0000000000000000

i/debug ( 841): d4 00000007000000b4 d5 3fe999999999999a

i/debug ( 841): d6 3fe000000000000binder: release proc 1047, transaction 109259, not freed

0 d7 3eaaaaab3f800000

i/debug ( 841): d8 0000000000000000 d9 0000000000000000

i/debug ( 841): d10 0000000000000000 d11 0000000000000000

i/debug ( 841): d12 0000000000000000 d13 0000000000000000

i/debug ( 841): d14 0000000000000000 d15 0000000000000000

i/debug ( 841): scr 80000012

根據 pc 位址 及crash的 動態庫可以推斷出現問題的 **位置,

利用 gcc 的 命令arm-eabi-addr2line ,從位址到**位置的定位:

具體例子:比如我的 動態庫為 hello.so,把此庫放在本地 帶 symbols 的android lib目錄下,執行

arm-eabi-addr2line -c-f -e /path/to/lib/with_sysbols/hello.so afd11f40

(i/debug ( 841): ip 0000173c sp 4e6fa9d8 lr deadbaadpc afd11f40cpsr 60000030

注意點:

1. 最好把你的動態苦編譯成除錯版本(-g)

2. 要把你的動態苦放在android 動態庫的 sysbols版本目錄下,比如我的機器上目錄為:(eg.)/home/usera/android/out/target/product/generic/symbols/system/lib

Android除錯方法大全

寫 是每個程式設計師最樂意做的事,然而在開發中也會遇到很多令程式設計師很頭疼的事情。如果說讓程式設計師最頭疼的事情是看到無數bug 軟體的發布遙遙無期,那麼讓程式設計師最最頭疼的事情是程式在除錯狀態下沒有問題然而在實際執行中確有問題。除錯程式是每個程式設計師工作中必不可少的部分,而且可以毫不誇張地說...

android 工程除錯方法

廢話不多說,直接來幾種除錯模式,給大家,看看你用過沒!第一種,也就是寫乙個全域性的log方法,並傳乙個布林引數,true 列印 false 不列印。這樣發布apk 的時候,所有的涉及到log的部分都可以去掉,相信很多人都這麼用的。第二種,是debug。這也是在工程感覺資料不對,或者 沒有執行的時候操...

Android基本除錯方法

一.eclipse模擬器的除錯 1.基本方法 斷點 單步 快捷鍵與vc有差別 debug f11 加斷點 shift ctrl b step into f5 step over f6 resume f8 可以選擇裝置,模擬器和真機都可以使用 2.高階 ddms使用 功能強大 可以進行手機螢幕截圖 檢...