写点什么

HarmonyOS 应用性能监测服务 APMS- 故障分析:快速定位线上崩溃根因

  • 2026-07-17
    北京
  • 本文字数:2330 字

    阅读完需:约 8 分钟

本原创文章帖发布在华为开发者联盟社区,欢迎开发者前往访问评论交流,更多与该内容相关讨论,请点击原帖查看:HarmonyOS应用性能监测服务APMS-故障分析:快速定位线上崩溃根因-华为开发者话题 | 华为开发者联盟

线上崩溃了,堆栈一片茫然——是该排查代码还是怀疑系统?日志千行万行,到底哪一行才是根因?问题反复出现却无法定位,修复上线后还是复现?

APMS 故障分析,正是为破解这些困局而生。从筛选过滤到 AI 智能分析,层层下钻,让每一起崩溃都有迹可循、有因可查。

故障分析页面

故障分析的入口在 AppGallery Connect 开发与服务/质量/APMS/故障分析下,也可以通过同层级的故障指标的 TOP 问题进行跳转  

筛选条件说明如下:

趋势分析

故障分析与故障指标一样提供了对应的指标的趋势分析,支持天、小时、分钟调整

崩溃详情

在时间范围与筛选维度的条件下,所有崩溃日志按照崩溃摘要进行聚合,展示了故障特征 ID、问题定界、故障类型、错误类型、故障模块、发生次数(占比)、影响设备(占比),同时支持查看问题详情、支持翻页每页 10 条聚合故障

聚合结果展示内容具体说明如下:

开发者可以通过列表,对当前问题分布的模块有一个大致的了解,也可以通过更新列表上的问题状态、优先级、问题备注等进行团队内问题的分析处理。 

问题详情

开发者可以通过点击列表操作栏的查看/处理按钮进入问题详情页面,问题详情页面是 APMS 对外提供的问题分析定位定界的能力

问题概要:

问题的状态不仅可以在外部更新,也可以在问题详情内进行更新,通过特征 ID,我们将一系列的单点问题汇聚到了一起,同时也支持了对于某一特征 ID 的问题的检索,如上图所示应用版本/ROM 版本等,都是基于当前特征 ID 汇聚的问题的检索

下钻分析:

对于聚类问题,APMS 提供了下钻分析的能力,如下图所示,针对聚类问题展示了问题的维度分布和趋势变化,开发者可以根据崩溃次数/崩溃设备数的变化曲线,验证问题的现网修复结果

查看个例:

问题列表

聚合问题列表按时间排序(最近),包含故障发生时间、应用版本、ROM 版本信息,点击该问题右侧展示问题的详细信息,每页展示 10 条数据,支持翻页功能。

分析报告

分析报告展示故障问题的基础信息,涵盖故障时间、应用版本、系统版本、设备型号等内容;同时提供故障详情,包含崩溃原因、修复建议、堆栈信息及现场数据。

堆栈信息

堆栈信息详细展示当前崩溃问题的调用堆栈,是分析和解决崩溃问题最直接的依据。原始堆栈经过结构化处理,对 FFRT 等相似线程做聚合处理;同时支持各线程堆栈的展开与收起,方便开发者聚焦故障线程堆栈进行分析定位。页面通过颜色标识应用函数与系统函数,支持按线程名称、Tid、函数名进行搜索。

现场数据

栈地址空间

程序运行时,操作系统会在计算机内存中为其分配独立内存空间,并将该空间划分为代码区、数据区、堆区、栈区等不同区域。栈地址空间可展示栈相关内存分配信息,点击展开即可查看完整详情。

寄存器信息

寄存器信息展示故障崩溃时的寄存器现场内容,包含寄存器、寄存器地址、寄存器内存值、附近地址内存值、内存段文件名等信息,可用于分析空指针及对象异常类问题;支持按寄存器地址、内存段文件名过滤数据,每页展示 10 条信息并支持翻页操作。

FD 信息

FD 信息展示崩溃发生时的 FD 使用状态,包含当前已使用 FD 数、当前未使用 FD 数、单进程最大可使用 FD 数,并按照 FD 类型、数量、占比进行分类。FD 详情中展示具体被打开的 FD 资源路径,同时在尾部标识指向该路径的 FD 个数。开发者可利用 FD 信息辅助排查问题,识别崩溃发生时打开数量过多的 FD 类型,便于针对性优化整改。

页面跟踪

页面跟踪可还原应用崩溃前的用户页面操作链路,默认保留最近 20 条操作记录;开发者可“ ”,实现全量页面切换行为的完整记录。

符号表

支持自动识别当前问题对应的应用版本;用户可针对该版本上传符号表(如 SourceMap、debug SO、namecache 等)。系统默认展示已上传的符号表信息,并支持下载与删除。

AI 分析

当前故障分析下 崩溃与冻屏部分场景已经支持了 AI 分析,可以从 TOP 问题列表的查看进入查看个例的界面,点击 AI 分析进行使用

AI 分析与传统日志分析的核心区别在于传统分析是基于规则和模式匹配的方式给出问题分析结果及定界,而 AI 辅助分析利用大模型的推理能力,引用历史故障知识库和业界通用知识库,对故障日志进行推理和分析,将使用者从繁重、重复的日志筛选中解放出来,精力聚焦于问题的解决方案上。

下面以一个崩溃问题为例讲述一下 AI 分析的流程:

  1. 应用崩溃是高频的问题,大部分问题可能基于崩溃栈就能直接定位,但遇到类似空指针、地址越界、多线程及调用系统接口异常等问题往往无很好的方案定位,目前崩溃类问题中 CPP_CRASH 问题提供了 AI 分析能力,可以通过点击故障中的“AI 分析”按钮在右侧弹出会话窗口获取到相应的分析结果。

  1. 以流式方式持续输出 AI 分析的结果,由浅到深逐步分析故障的根因给出相关的分析结果,包含【故障基本信息】、【根因分析】、【三级根因定位】、【证据链】、【根本原因】、【根因模块】、【修复建议】分析模块,使用者可以逐步掌握该类型的分析过程及关键点。

  1. AI 分析会结合鸿蒙系统的故障知识库给出对应的故障根因、根因模块和修复建议,使用者可以根据修复建议结合自身工程源码进行问题修复。

  1. 使用结束后,通过点击空白处或右侧的“x”按钮能够关闭该对话框,AI 分析的结果有缓存的机制,再次点击会直接呈现结果。

筛选聚焦 → 聚合看全貌 → 下钻看趋势 → 堆栈定根因 → AI 辅助推理——五步走,让每一次崩溃都找到答案。


🔗 官网开发者学堂视频:https://developer.huawei.com/consumer/cn/training/result?type2List=201783644516849879&orderBy=1&courseType=5

🔗 社区 DFX 专题文章: https://developer.huawei.com/consumer/cn/forum/subject/2101218731402391001

【扫码加入 HarmonyOS DFX 技术交流群】