Native_crash

问题分析

Native的Crash是指在C/C++运行时出错,系统产生了Linux错误信号,导致的进程出错退出。可以通过系统的logcat来分析Crash日志。

解决方案

应用在C/C++运行时出错,系统产生了Linux错误信号,导致的进程出错退出。建议开发者使用NDK工具ndk-stack进行分析定位。

Android开发中,在Java层可以方便的捕获crashlog,但对于Native层的crashlog通常无法直接获取,只能通过系统的logcat来分析Crash日志。这里我们建议开发者使用NDK工具ndk-stack进行分析定位。

  1. 下载最新版NDK。ndk-stack工具就在NDK主目录下。

  2. 在mqc管理中心找到出现Native Crash的测试,并下载日志。

  3. 根据失败机型查找该机型的CPU信息ro.product.cpu.abi,如图三星N7100的CPU类型为armeabi-v7a。(目前mqc上的模拟器CPU类型均为x86_64。)

  4. 使用ndk-stack分析出错位置,命令格式如下:

    $NDK/ndk-stack -sym $PROJECT_PATH/obj/local/$cpu.abi -dump $LOGCAT_PATH

    本示例使用的命令如下:

    ndk-stack -sym ./workspace2/testNdkStack/obj/local/armeabi-v7a/ -dump ./logcat.log > result.log

    在result.log中可以分析定位到出现该Crash的对应代码文件和具体行数。