查看AppFreeze(应用冻屏)日志
从DevEco Studio 6.0.0 Beta2版本开始,支持对AppFreeze类型的FaultLog,进行结构化展示和日志过滤。关于AppFreeze日志的检测原理、日志规格等信息请查看AppFreeze(应用冻屏)检测。
-
打开FaultLog窗口,双击appfreeze日志,Fault Info右侧会出现Fault Analysis页签。

-
点击Fault Analysis页签,会展示结构化的日志信息。
-
页面上方的字段对应了FaultLog中的字段,具体对应关系请查看字段说明。
-
页面下方包含Stacks、Logs、Binder Communication、System等页签,具体如下。
- Stacks:展示线程的堆栈信息,具体请参考查看堆栈信息。
- Logs:展示FaultLog中的HiLog日志,具体请参考查看HiLog日志。
- Binder Communication:从DevEco Studio 6.1.1 Beta1版本开始,新增Binder Communication页签,对应AppFreeze日志中的对端信息(与当前故障进程通信的进程信息),用于展示进程间通信的调用信息、各进程Binder资源信息,具体请参考查看Binder通信信息。
- System:从DevEco Studio 6.0.0 Beta3版本开始,新增System页签,用于在高负载场景下,展示设备CPU/内存的日志信息,具体请参考查看高负载CPU/内存日志信息。
- Sampling Stack:从DevEco Studio 6.1.1 Beta1版本开始,新增Sampling Stack页签,对应AppFreeze增强日志中的堆栈信息,用于查看采样栈数据,标记可疑问题栈,具体请参考查看采样栈数据信息。
- 3s/6s Compare:从DevEco Studio 6.0.2 Beta1版本开始,新增3s/6s Compare页签,用于对THREAD_BLOCK_6S类型的AppFreeze问题,展示3s和6s时间点的主线程堆栈日志,具体请参考查看3s/6s堆栈日志。
- Main Thread Task Queue:从DevEco Studio 6.1.1 Beta1版本开始,新增Main Thread Task Queue页签,对应AppFreeze日志中的EventHandler信息,用于展示主线程的任务队列,包括历史任务和待调度任务,具体请参考查看主线程任务队列信息。

-
字段说明
Fault Analysis页签中的字段和FaultLog的字段对应关系如下。
表1| Fault Analysis的字段 | 说明 |
|---|---|
| Occurrence time | FaultLog发生的时间,对应FaultLog中的Timestamp字段。 |
| Analysis time | 触发日志结构化展示的时间,即双击日志文件的时间。 |
| Frontend | 是否是前台应用,对应FaultLog中的Foreground字段。 |
| Bundle name | 包名,对应FaultLog中的Module name字段。 |
| Device type | 设备类型。 |
| App build number | 应用构建号,对应FaultLog中的VersionCode字段。 |
| App version | 应用版本,对应FaultLog中的Version字段。 |
| Device model | 设备信息,对应FaultLog中的Device info字段。 |
| System version | 系统镜像版本,对应FaultLog中的Build info字段。 |
| Freeze type | 冻结类型,对应FaultLog中的Reason字段。 |
| Note | 从DevEco Studio 6.1.1 Beta1版本开始,如果AppFreeze是系统高负载导致的,会显示Note字段,对应FaultLog中的NOTE字段。 |
查看堆栈信息
Stacks页签用于查看AppFreeze中的堆栈信息,并以线程为单元进行折叠,点击展开按钮,可以展开对应线程。

图中标注1的勾选框是展开应用堆栈,标注2的勾选框是展开系统堆栈,两个勾选框一共组成了四种状态,具体如下表。
表2| 勾选框勾选状态 | 说明 |
|---|---|
| 1、2都不勾选 | 展示所有线程,线程处于折叠状态。 |
| 1、2都勾选 | 展示所有线程,线程处于展开状态。 |
| 只勾选1 | 只展示应用线程,线程处于展开状态。 |
| 只勾选2 | 只展示系统线程,线程处于展开状态。 |
查看HiLog日志
Logs页签用于查看AppFreeze中的HiLog日志,支持日志级别的过滤和搜索。

查看Binder通信信息
从DevEco Studio 6.1.1 Beta1版本开始,新增Binder Communication页签,对应AppFreeze日志中的对端信息(与当前故障进程通信的进程信息)。
Binder Communication页签包含以下内容:
① 查看进程间通信的调用信息及等待时间的情况,包括binder通信方式、发起进程/线程、接收进程/线程等。
② 查看各进程Binder资源信息,包括进程ID/名称、当前IPC请求数、已启动IPC线程数、最大IPC线程数等,当进程资源紧张时会高亮显示。

查看高负载CPU/内存日志信息
从DevEco Studio 6.0.0 Beta3版本开始,新增System页签,用于在高负载场景下,展示设备CPU/内存的日志信息,有助于分析高负载和AppFreeze之间的关联关系。
如下是CPU的相关日志。
①:柱状图表示对应时间点的CPU使用情况(百分比)。
②:鼠标悬浮在柱状图上,会显示CPU总使用率、CPU使用率top5的进程号(Pid)和对应的CPU使用率。
③:选中柱状图后,显示相关的日志。

如下是内存的相关日志。
①:柱状图表示对应时间点的内存使用情况(百分比)。
②:鼠标悬浮在柱状图上,会显示内存使用率、内存占用top5的进程和对应的内存大小。
③:选中柱状图后,显示相关的日志。

查看采样栈数据信息
从DevEco Studio 6.1.1 Beta1版本开始,新增Sampling Stack页签,对应AppFreeze增强日志中的堆栈信息,用于查看采样栈数据,标记可疑问题栈。
查看采样栈数据之前,需要在AppScope/app.json5文件中配置如下环境变量,获取AppFreeze增强日志。
"appEnvironments": [
{
"name": "DFX_APPFREEZE_LOG_OPTIONS",
"value": "mainthread_sampling:enable"
}
]
Sampling Stack页签默认展示堆栈水平条形图,按照堆栈的出现频率从高到低排序,条形图最后的数字是堆栈出现的次数,并通过不同颜色标识应用堆栈和系统堆栈,可通过左上角的勾选框选择查看对应的堆栈。

点击切换图表类型按钮,可切换到堆栈火焰图,并通过不同颜色标识堆栈类型,其中红色代表异常堆栈。

查看3s/6s堆栈日志
从DevEco Studio 6.0.2 Beta1版本开始,新增3s/6s Compare页签,用于对THREAD_BLOCK_6S类型的AppFreeze问题,展示3s和6s时间点的主线程堆栈日志,并标识栈帧中可能的故障处。

如果不是THREAD_BLOCK_6S类型的AppFreeze问题,不会展示3s/6s Compare页签。
查看主线程任务队列信息
从DevEco Studio 6.1.1 Beta1版本开始,新增Main Thread Task Queue页签,对应AppFreeze日志中的EventHandler信息,用于展示主线程的任务队列,包括历史任务和待调度任务。
① 在历史任务概览中,可查看每个任务的名称、耗时、优先级等信息,并通过不同颜色标识正常耗时任务、长耗时任务和当前调度任务,默认展示无响应的任务。
② 在待调度任务概览中,展示了5种级别的任务占比情况,点击饼图可跳转到对应的任务详情。
③ 在任务详情中,可切换不同页签,查看历史任务和待调度任务的详情,支持对任务进行排序和搜索。
④ 支持切换查看3s和6s时间点的任务信息。
