给大家介绍一下,NDK调试工具是哪个?arm-linux-androideabi-addr2line。今天我们来调试学习一下这个NDK工具:
同时,在给大家分享之前,这里推荐下我自己建的Android技术分享群 :653961128,不管你是小白还是大牛,小编我都挺欢迎,不定期分享干货,包括2017最新的Android企业案例学习资料和零基础入门教程,欢迎初学和进阶中的小伙伴,大家一起交流学习,共同进步。
arm-linux-androideabi-addr2line作用
看工具名称就知道是将内存地址转换成行号,具体点就是根据so库抛出的Error日志的中内存地址,找到具体是在那个文件的哪一行出现的该错误。
环境
环境变量配置
配置arm-linux-androideabi-addr2line环境变量,工具所在目录:ndk目录下的toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64\bin,版本可能不一样
(此步骤可以省略,当然不配置的话,每次命令行工具都得切换到该工具目录下才可运行)
实例
某次开发ndk发生如下错误,我想知道具体是在哪个源文件的哪一行发生的:
所以在命令行工具运行:
控制台输出:
F:\workspace\FFmpegDemo\app\src\main\cpp/ffmpeg-media.c:223
【有图有真相】
我们可以看到错误的位置位于ffmpeg-media.c源文件的223行。
tips:本示例这里发生这个错误是由于JNI中使用多线程没有把需要跨线程访问的类对象定义成全局引用而造成的。
需要注意的地方