关于android 上 gdb调试进程的方法请参考前一篇文章。


如果 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 deadbaad pc afd11f40 cpsr 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

上面的afd11f40 为 crash时的pc 地址:

(I/DEBUG ( 841): ip 0000173c sp 4e6fa9d8 lr deadbaad pc afd11f40 cpsr 60000030

注意点:

1. 最好把你的动态苦编译成调试版本(-g)

2. 要把你的动态苦放在android 动态库的 sysbols版本目录下,比如我的机器上目录为:(Eg.)/home/usera/android/out/target/product/generic/symbols/system/lib




更多相关文章

  1. android native c 的so调试
  2. android sdk 安装时无法连接到地址
  3. Android(安卓)Studio 2.0 Preview发布,附下载地址,支持即时运行和
  4. android 上调试动态库方法
  5. Android网络游戏之神农诀项目开发--视频观看地址
  6. 2011.09.21——— android 动态壁纸开发
  7. android 调试堆栈整理
  8. 2011.09.21——— android 动态壁纸开发
  9. Android设备获取wifi下的ipv6地址

随机推荐

  1. android webkit JavaScript 不能处理onke
  2. Android应用程序资源——Animation动画资
  3. Android.mk——makefile分析
  4. Android中invalidate()和postInvalidate(
  5. QQ音乐Android客户端Web页面通用性能优化
  6. 【Android】自定义FlowLayout,支持多种布
  7. Android中水波纹使用之自定义视图实现
  8. Android(安卓)studio 单元测试初探
  9. 初学Android,使用自定义的XML资源(十八)
  10. 基于ARM Cortex-A8和Android 4.x的联动报