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

0 评论 117 浏览 0 收藏 16 分钟

线上崩溃了,堆栈一片茫然——是该排查代码还是怀疑系统?日志千行万行,到底哪一行才是根因?问题反复出现却无法定位,修复上线后还是复现?
APMS故障分析,正是为破解这些困局而生。从筛选过滤到AI智能分析,层层下钻,让每一起崩溃都有迹可循、有因可查。

本原创文章帖发布在华为开发者联盟社区,欢迎开发者前往访问评论交流,更多与该内容相关讨论,请点击原帖查看:

HarmonyOS应用性能监测服务APMS-故障分析:快速定位线上崩溃根因-华为开发者话题 | 华为开发者联盟

 

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

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

故障分析页面

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

 

       筛选条件说明如下:

筛选条件 说明
应用版本 应用的版本标识
系统版本 应用适配的系统版本
设备型号 唯一标识设备硬件规格和版本的代码,例如:ALN-AL00
时间范围

筛选数据的时间段,支持以下数据聚合粒度:

天:最长跨度30天,时间支持按天调整

小时:最长跨度7天,时间支持按小时调整

分钟:最长跨度2天,时间支持按分钟调整

系统发布类型

HarmonyOS系统的发布类型,候选值如下:

Canary:早期预览版本

Beta:公开发布的测试版本

Release:正式发布版本

ROM版本 设备终端当前运行的操作系统固件版本
进程名称 应用的运行时的进程名称
应用在前台 故障发生时,应用是否处于前台
崩溃类型 崩溃的类型,可选值为:CPP_CRASH、JS_ERROR
故障指纹 系统侧基于故障特征生成的ID,非唯一主键,可以用于辅助查询相似问题

趋势分析

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

崩溃详情

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

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

问题特征ID 基于故障类型、错误类型、故障模块维度信息进行哈希生成特征ID,用于问题聚合
问题定界 基于故障模块及专家规则分析给出问题定界结论,初步定界为应用问题或系统问题
故障类型 崩溃类问题包含JS_ERROR和CPP_CRASH两大类异常
错误类型 应用出现崩溃问题时reason中返回的异常信号,如SIGSEGV全称Segmentation Violation(段错误),表示程序试图访问未映射的内存地址
故障模块 给出问题的关键堆栈或问题原因,一般为应用的业务堆栈
发生次数 指定筛选条件下同一聚合根因的问题出现的次数
影响设备 指定筛选条件下同一聚合根因的问题出现的设备数
起止版本 给出该问题最早出现的版本及最后出现的版本,方便开发者识别是否为新增问题
问题状态 用户可以给聚合的问题设置处理状态,包括“未处理”,“已忽略”,“处理中”,“已修复”
优先级 设置问题的优先级,包括“高”,“中”,“低”
问题备注 针对问题进行备注描述

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

问题详情

       开发者可以通过点击列表操作栏的查看/处理按钮进入问题详情页面,问题详情页面是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分析”按钮在右侧弹出会话窗口获取到相应的分析结果。

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

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

    4. 使用结束后,通过点击空白处或右侧的“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 技术交流群】

本文由 @华为开发者联盟 授权发布于人人都是产品经理。未经作者许可,禁止转载

题图来自Unsplash,基于CC0协议

该文观点仅代表作者本人,人人都是产品经理平台仅提供信息存储空间服务

更多精彩内容,请关注人人都是产品经理微信公众号或下载App
评论
评论请登录
  1. 目前还没评论,等你发挥!