一、崩溃问题
崩溃涵盖CPP CRASH、JS ERROR两类问题。
| 页面 | 提供能力 |
|---|---|
| 主页面 | 问题列表及趋势分析等功能 |
| 问题列表页面 | 全方位的故障筛选能力,支持应用版本、系统版本、机型、时间等维度过滤;提供崩溃率、崩溃次数、崩溃设备数的趋势分析能力 |
| Top 问题列表 | 基于故障特征进行聚合,提供多个维度的聚合列表,默认基于故障发生次数排序,方便聚焦头部问题快速提升应用质量 |
二、问题筛选
在崩溃的问题列表中支持多维度的问题筛选能力,支持以下过滤条件:
| 筛选条件 | 说明 |
|---|---|
| 应用版本 | 应用的版本标识 |
| 系统版本 | 应用适配的系统版本 |
| 设备型号 | 唯一标识设备硬件规格和版本的代码,例如:ALN-AL00 |
| 时间范围 | 筛选数据的时间段,支持以下数据聚合粒度: •天:最长跨度30 天,时间支持按天调整 •小时:最长跨度7 天,时间支持按小时调整 •分钟:最长跨度2 天,时间支持按分钟调整 |
| 系统发布类型 | 鸿蒙 OS 系统的发布类型,候选值如下: •Canary:早期预览版本 •Beta:公开发布的测试版本 •Release:正式发布版本 |
| ROM 版本 | 设备终端当前运行的操作系统固件版本 |
| 进程名称 | 应用的运行时的进程名称 |
| 应用在前台 | 故障发生时,应用是否处于前台 |
| 故障摘要 | 输入故障摘要进行筛选 |
三、趋势分析
提供崩溃率、崩溃次数、崩溃设备数的趋势分析能力。
鼠标移动到折线时展示对应时间的故障数据
当前支持按天粒度查看数据
四、崩溃信息
TOP 问题列表
在时间范围与筛选维度的条件下,所有崩溃日志按照崩溃摘要进行聚合,展示以下内容:
| 字段 | 说明 |
|---|---|
| 问题特征ID | 基于故障类型、错误类型、故障模块维度信息进行哈希生成特征ID,用于问题聚合 |
| 问题定界 | 基于故障模块及专家规则分析给出问题定界结论,初步定界为应用问题或系统问题 |
| 故障类型 | 崩溃类问题包含JS_ERROR 和 CPP_CRASH两大类异常 |
| 错误类型 | 应用出现崩溃问题时 reason 中返回的异常信号,如SIGSEGV全称 Segmentation Violation(段错误),表示程序试图访问未映射的内存地址 |
| 故障模块 | 给出问题的关键堆栈或问题原因,一般为应用的业务堆栈 |
| 发生次数(占比) | 指定筛选条件下同一聚合根因的问题出现的次数 |
| 影响设备(占比) | 指定筛选条件下同一聚合根因的问题出现的设备数 |
| 起止版本 | 给出该问题最早出现的版本及最后出现的版本,方便开发者识别是否为新增问题 |
| 问题状态 | 用户可以给聚合的问题设置处理状态,包括「未处理」「已忽略」「处理中」「已修复」 |
| 优先级 | 设置问题的优先级,包括「高」「中」「低」 |
| 问题备注 | 针对问题进行备注描述 |
聚合列表支持翻页,每页 10 条,同时支持查看问题详情。
五、问题详情
1. 问题
给出该类问题的聚合信息,包括:
问题特征ID
错误类型
异常描述
故障模块
2. 筛选条件
问题详情页面支持与故障分析页面相同的过滤筛选能力。
用户点击聚合列表查看问题时,默认携带父页面的过滤条件
同时支持在详情页面进行条件修改(基于问题特征ID为必要条件)
3. 问题列表
聚合问题列表按时间排序(最近),包含:
故障发生时间
应用版本
ROM 版本信息
点击该问题右侧展示问题的详细信息,每页展示 10 条数据,支持翻页功能。
4. 分析报告
分析报告展示故障问题的基础信息,涵盖:
故障时间
应用版本
系统版本
设备型号
同时提供故障详情,包含:
崩溃原因
修复建议
堆栈信息
现场数据
5. 堆栈信息
堆栈信息详细展示当前崩溃问题的调用堆栈,是分析和解决崩溃问题最直接的依据。
| 特性 | 说明 |
|---|---|
| 结构化处理 | 原始堆栈经过结构化处理,对FFRT 等相似线程做聚合处理 |
| 展开与收起 | 支持各线程堆栈的展开与收起,方便聚焦故障线程堆栈进行分析定位 |
| 颜色标识 | 页面通过颜色标识应用函数与系统函数 |
| 搜索 | 支持按线程名称、Tid、函数名进行搜索 |
六、现场数据
现场数据包含四个子模块:栈地址空间、寄存器信息、FD信息、页面跟踪。
1. 栈地址空间
程序运行时,操作系统会在计算机内存中为其分配独立内存空间,并将该空间划分为代码区、数据区、堆区、栈区等不同区域。
栈地址空间可展示栈相关内存分配信息,点击展开即可查看完整详情。
2. 寄存器信息
展示故障崩溃时的寄存器现场内容,包含:
寄存器
寄存器地址
寄存器内存值附近地址内存值
内存段文件名
可用于分析空指针及对象异常类问题。
支持按寄存器地址、内存段文件名过滤数据,每页展示 10 条信息并支持翻页操作。
3. FD信息
展示崩溃发生时的FD 使用状态,包含:
当前已使用 FD 数
当前未使用 FD 数
单进程最大可使用 FD 数
并按照FD 类型、数量、占比进行分类。
FD 详情中展示具体被打开的FD 资源路径,同时在尾部标识指向该路径的 FD 个数。
可利用 FD 信息辅助排查问题,识别崩溃发生时打开数量过多的 FD 类型,便于针对性优化整改。
4. 页面跟踪
页面跟踪可还原应用崩溃前的用户页面操作链路,默认保留最近 20 条操作记录。
可通过调用 SDK 接口,实现全量页面切换行为的完整记录。
七、符号表管理
符号表支持自动识别当前问题对应的应用版本,用户可针对该版本上传符号表(如SourceMap、debug SO、namecache等)。
页面功能
系统默认展示已上传的符号表信息
支持下载与删除
上传符号表
点击「上传符号表」按钮可上传其他符号表。
上传窗口包含两个必填项:
| 字段 | 说明 |
|---|---|
| 版本号 | 下拉框选择 |
| 文件 | 点击「选取文件」上传 |
文件格式要求:
限json、so、map、zip文件,单个文件不能大于 3G
整体来看,「故障分析」是 APMS 中最核心的排查工具:
问题列表 → 筛选条件 → 趋势分析 → TOP问题聚合 → 问题详情 → 堆栈信息 → 现场数据 → 符号表还原
日常排查建议:
先看趋势:崩溃率、崩溃次数、崩溃设备数是否有异常波动
再看 TOP 问题:按发生次数排序,优先解决头部问题
关注起止版本:识别新增问题,判断是否与最近版本相关
善用问题定界:应用问题自己改,系统问题及时反馈
上传符号表:让堆栈能还原到源码级别,定位效率翻倍
用 FD 信息排查泄漏:句柄类问题用这个最直接
如果崩溃问题较多,建议先用「应用版本 + 系统版本 + 时间范围」圈定范围,再用问题状态管理处理进度,避免遗漏。