Android Native Crash 排查思路
最近在Android应用开发中遇到了一个Native Crash,仅仅从LogCat打出的日志没能找到崩溃原因。
如何定位错误原因成了目前最大的问题。
有个比较好的方法,利用bugreport命令:
adb bugreport ~\
app crash 的时候,系统会保存一个tombstone文件到/data/tombstones目录,该命令会导出最近的crash相关信息。
通过bugreport导出得到一个zip包,解压后如下:
即可从tombstones文件夹中查找需要的日志。
#01 pc 00000000000e7b48 /system/lib64/libart.so (_ZN3art17ConditionVariable16WaitHoldingLocksEPNS_6ThreadE+160)
#02 pc 000000000037a438 /system/lib64/libart.so (_ZN3art7Monitor4WaitEPNS_6ThreadElibNS_11ThreadStateE+660)
通过这两行日志基本可以确定是造成了死锁导致的崩溃。
接下来就是根据这些日志修复问题啦。