美文网首页
Android NDK ANR问题分析处理

Android NDK ANR问题分析处理

作者: 狼man | 来源:发表于2019-01-31 13:57 被阅读0次

        Android开发中不可避免会遇到ANR的情况,如果是Java层发生了ANR,我相信这个日志很好分析,这篇文章主要介绍一下如果是C/C++层发生了ANR,该如何去处理和分析。

    先说一下主要的步骤

    1、拿到ANR日志,如果保存的有发版时的debugso或者是用debug的so运行时发生的问题,可以直接使用addr2line导出堆栈信息,否则就得尝试用debug的so复现。因为debug的so会保存符号表信息,所以体积比release的so会大很多。

    2、导出堆栈之后能定位到发生问题的具体代码行,但是一定要用编译so时对应的代码去看,否则看到的行肯定是错误的,如果通过调用关系和发生问题的代码行可以分析出问题,那么直接修改就可以了,如果分析不出来,那么就需要在C/C++代码中增加日志,复现问题,结合日志和anr信息共同确定问题

    具体的操作

    1、addr2line

          这个工具是分析NDK层出现ANR必须使用的工具,只要你的电脑上装了NDK,里边自带的有这个工具,具体目录是android-ndk-r12b/toolchains/cpu架构/prebuit/bin/****_addr2line,里边分不同的CPU架构.

    如果是arm64v8a的架构,选择第一种,armeabi或者armv7a的选择第二种,依次此类推

    使用也比较简单,addr2line -e ****.so  005478f32a

    多个行号用空格分开,如下所示:

    2、日志分析,首先要看ANR发生的时间,还有进程号等信息,多进程环境下尤其要注意。

    如果想从大量日志中筛选出来需要的进程信息,可以用下边的命令,比如筛选出进程号为7754的进程打印的日志信息。

    grep '.' main_log_5__2019_0130_194243|grep -E '7754' >7754.txt

    相关文章

      网友评论

          本文标题:Android NDK ANR问题分析处理

          本文链接:https://www.haomeiwen.com/subject/ozvksqtx.html