应用无响应(appfreeze)日志分析指导
简介
应用在用户使用的时候会出现点击没有反应、应用没有响应等情况,其超过一定时间后即被定义为应用无响应(appfreeze)。OpenHarmony提供了检测应用无响应的机制,并生成appfreeze日志供应用开发分析使用。
说明1: 本指导仅适用于Stage模型下的应用使用。
说明2: 在使用本指导分析日志前,需要开发者对JS在OpenHarmony中运行情况、C++程序堆栈信息有相关基础知识,并对应用相关的子系统有一定了解。
获取方式
应用无响应日志是一种故障日志,与Native进程崩溃、JS应用崩溃、系统进程异常等都归类到FaultLog下面,可以通过如下三个方式获取日志:
通过shell获取日志
在设备/data/log/faultlog/faultlogger/下面,以appfreeze-开头的日志。
日志格文件名格式是appfreeze-应用包名-应用UID-秒级时间
通过DevEco Studio获取日志
DevEco Studio会收集设备的故障日志到FaultLog下面:
DevEco Studio会将包名和故障和时间都分类好显示
通过faultlogger接口获取
faultlogger对外提供了故障查询接口,可以查询各种故障信息,详见@ohos.faultLogger (故障日志获取)
应用无响应检测能力点
目前应用无响应检测从以下维度检测,应用开发者了解其原理对定位和分析appfreeze故障非常有帮助。
故障类型 | 说明 |
---|---|
THREAD_BLOCK_6S | 应用主线程卡死超时 |
APPLICATION_BLOCK_INPUT | 用户输入响应超时 |
LIFECYCLE_TIMEOUT | Ability生命周期切换超时 |
APP_LIFECYCLE_TIMEOUT |