场景描述
- 调试app在使用中出现崩溃。
- 当我们把手机连接电脑,在AS的logcat中查看App的运行日志的时候,错误日志在logcat中一闪而过,很快就会被后面的新日志给覆盖掉调。
- 并不是所有手机都这样,只有部分手机。如nexus、华为等。
解决办法
方法一
- 将logcat过滤器从show only selected application改为No filters。
- 将log级别改为error。
方法二
换一个崩溃后不会重启应用的系统。
方法三
使用adb logcat > 1111.txt
命令把错误日志导出来,然后自己去找对应的错误日志。
原因分析
为什么有的手机不这样,而有的手机会这样?
某些系统在APP crash之后会自动重启,导致新的日志会覆盖掉以前的日志。而有些系统在crash之后不重启,就不会出现错误日志被覆盖的情况。
为什么奔溃前的错误日志会被覆盖掉?
- 在logcat工具栏有下面几个过滤选项:设备、进程、log级别(i、e、v等)、搜索关键词、过滤器。
- 正常使用的时候,我们会设备、自己的进程。然后在过滤器上选择show only selected application。这样就能只显示我们自己app的日志了。
- 每一个application都是一个进程,对应一个进程号。一个APP在崩溃前和崩溃重启后,是两个进程。
- 所当app崩溃并自动重启后,logcat过滤器显示的是重启后新进程的日志。而我们希望看到的错误日志是之前进程的,所以不会显示。
网友评论