1.通过adb logcat 来获取:
使用场景:测试或者开发小伙伴 抓取。
先执行adb logcat -c
清理缓存日志
接着,抓取当前时间段开始的日志:
adb logcat -v time >D:/crash.log
也可以抓取指定进程的日志:
adb logcat -v time | find "com.xxx" >D:/crash.log
其中-v
和time
是指log的v级别日志,也可用w 警告级别,time 是输出时间。
最后,执行Ctrl + C 结束抓取。
2.通过dropbox方式来获取系统记录的奔溃日志:
使用场景:当无法重现该场景,或者adb logcat 无法抓取时,可以通过dropbox 来查看系统记录的奔溃。
Android DropBox是Android用来持续化存储系统数据的一个管理类,
主要用于记录Android运行过程中, 内核, 系统进程, 用户(app)进程等出现严重问题时的log,可看做是一个可持续存储的系统级别的 logcat.
使用dropbox查看记录的各种异常日志列表:adb shell ls -al /data/system/dropbox
,有些设备上会提示无权限。
将dropbox下多个文件内容输出打印到指定文件中:
adb shell dumpsys dropbox --print >>D:\dropbox\crash.log
打开crash文件,根据时间点找到奔溃信息:
通过该日志,很容易判断是: 系统进程引起还是app进程自身导致奔溃
dropbox日志文件中 进程奔溃类型:
system_server_anr:system进程无响应
system_server_watchdog:system进程发生watchdog
system_server_crash:system进程崩溃
system_server_native_crash:system进程native出现崩溃
system_server_wtf :system进程发生严重错误
system_server_lowmem :system进程内存不足
当然除了system_server进程, 还有system_app, data_app类型的进程, 以上所有类型都适用,列举部分:
system_app_crash: 系统app崩溃
system_app_anr: 系统app无响应
data_app_crash: 普通app崩溃
data_app_anr: 普通app无响应
更多分析,请阅读https://wizzie.top/android/android_dropbox/