闪退时:
1.先找到离闪退时间点最近的log,通常从后往前搜索关键字has died|crash|Error|Fatal|memory|heap|Abort等等关键字
2.然后在这附近查找错误的根源,例如从下图可以判断可能是libastra_core.so库内部出错
![](https://img.haomeiwen.com/i1878258/e38a89597950f93a.png)
![](https://img.haomeiwen.com/i1878258/167f23bd12a7aa5f.png)
这种可能是系统camera相关的问题,
![](https://img.haomeiwen.com/i1878258/163bf1ff5eefc33f.png)
这种是系统libc库报错,但是附近有heap corruption detected by dlmalloc字样,说明堆内存已经爆了
![](https://img.haomeiwen.com/i1878258/807be076b083154b.png)
报错信息中的行号也是有作用的,如果是自己打的so库,则可以用ndk带的addr2line工具去查看行号对应的函数名
![](https://img.haomeiwen.com/i1878258/88e6f13d19694480.png)
![](https://img.haomeiwen.com/i1878258/0dbbf2a197ef1c0a.png)
对于非闪退的情况:
一般都是程序内报错了,可以尝试搜索Exception|Error之类的
如果Log中分析不出错误根源,那就只好用蛮力了,在最可能接近根源的地方每行打Log,逐句排查
网友评论