公司动态
HarmonyOS应用性能监测服务APMS-故障分析:快速定位线上崩溃根因
本原创文章帖发布在华为开发者联盟社区欢迎开发者前往访问评论交流更多与该内容相关讨论请点击原帖查看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辅助推理——五步走让每一次崩溃都找到答案。-----------------------------------------------------------------------------------------------------------官网开发者学堂视频华为开发者学堂社区DFX专题文章华为开发者问答 | 华为开发者联盟【扫码加入 HarmonyOS DFX 技术交流群】