安卓JNI调试、C++/C代码调试、native层调试策略

由于在PC端的调试并不能应用到真机——安卓系统环境,NDK在安卓IDE环境中的调试便给众多开发者带来了无尽的困扰。


其实,NDK已然为众多开发者铺好了一条DEBUG的平坦大道,只是问津者尚在少数。


本文将介绍一下最好的JNI调试策略之一:

一.NDK-STACK

如果没有将NDK所在路径配置到环境变量ClassPath中的朋友们,可以去配置一下,这样将大大方便我们后期的调试步骤。


首先,打开命令行,需要将目录定位到NDK所在目录(已经配置环境变量可自动忽略此步骤)

adb logcat | ndk-stack -sym $PROJECT_PATH/obj/local/armeabi

执行以上语句,armeabi代表真机CPU

$PROJECT_PATH/obj/local/armeabi
这个目录为动态链接库所在目录,也可以以绝对路径形式表示,在手机端与电脑进行连接后,Run App出错,命令行将会显示错误信息





然而这样的结果只能显示出出问题的方法,并不能显示问题所在行


此时,就需要NDK提供的 arm-linux-androideabi-addr2line 工具协助


二.arm-linux-androideabi-addr2line


本人的arm-linux-androideabi-addr2line路径如下所示:

D:\android-ndk-r10d\toolchains\arm-linux-androideabi-4.8\prebuilt\windows\bin


实在找不到的朋友也可以自行下载


将CMD定位到此目录bin后,根据下图红框的地址 00011080



根据地址00011080,借助arm-linux-androideabi-addr2line工具来进行查找c/cpp文件对应错误位置

arm-linux-androideabi-addr2line -C -f -e E:\app\src\main\obj\local\armeabi-v7a\libstitchercore.so 00011080

这部分路径E:\app\src\main\obj\local\armeabi-v7a\libstitchercore.so就是so文件所在地址,切记一定要定位到obj目录,否则定位到其他目录下的so,查出来的行数则会显示问号


路径后面紧接着的就是地址00011080,每次查询对应修改成自己的地址就可以了,查询定位到相关出错文件行数,显示如下:



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值