一 、 什么是Native Crash :
最简单的理解就是发生在Native世界里的异常,当然你也可以更直接一些,发生在lib库里异常。
常见的native crash有 SIG 7/11 等,尤其是这两个哥们,在新项目阶段的出场率还是非常高的,访问非法内存/内存对齐诸如此类。
二、如何分析Native Crash:
发生nativeCrash的时候,通常可以从mainlog中看到如下打印:
01-01 08:44:29.559 133 133 I DEBUG : *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
01-01 08:44:29.559 133 133 I DEBUG : Build fingerprint: 'XXXXXXXXXXX:user/release-keys'
01-01 08:44:29.569 133 133 I DEBUG : pid: 261, tid: 326, name: AudioService >>> system_server <<<
01-01 08:44:29.569 133 133 I DEBUG : signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0000000d
从这里我们可以看到出现问题的进程和线程分别是261 /326 对应就是system_server / AudioService ,而发生异常的原因就是SIG11 ,访问了一个非法地址0xd。
那么如何分析呢?我们需要知道出现问题的上下文。