鸿蒙高级课程笔记1—应用DFX能力介绍

HarmonyOS应用DFX介绍

DFX业务介绍

HarmonyOS生态DFX能力范围

围绕开发者,构建三方应用和设备从开发到维护全生命周期所必需、有竞争力、有特色的调试调优、定位、维护能力。这些都属于DFX的范围。

HarmonyOS为应用、设备、运维(为运行态提供运维能力)、开发阶段提供DFX能力。DFX全景如下:

DFX设计

DFX设计是保证产品和应用质量的主要方法。DFX设计主要范围:

  • HiLog日志:日子的内容及位置,这是日子设计的主要问题。
  • HiAppEvent应用事件:主要是埋点的上报,埋点的内容和位置是设计的主要问题,包括故障事件、行为事件两部分。 事件埋点接口,提供事件的埋点写入。
  • HiTrace Meter跟踪:提供追踪进程轨迹,进行程序性能分析,支持内核ftrace预置埋点和用户态打点。
  • HiTrace Chain调用链:主要提供业务流程调用链跟踪的维测,通过业务流程的还原,可以清晰的知道整个业务流程过程中哪些地方发生了问题。

日志设计原则

日志分类查看

日志内容输出原则

HiAppEvent埋点设计原则

完备的事件打点接口;方便的事件查看工具;轻量灵活的平台部署;

系统提供的事件说明

开发者可以通过系统提供的接口监听到系统事件,比如崩溃、卡死事件应用重启后回调相关接口,接口通过AppEventInfo结构返回数据。系统提供的常用事件说明如下图

HiTrace Meter跟踪设计

HiTraceMeter是HarmonyOS/OpenHarmony用于性能追踪的核心工具。它通过在代码中埋点并利用内核的ftrace机制,帮你精确抓取并分析应用、跨设备调用链的性能数据,从而定位卡顿、耗时等瓶颈问题。

HiTrace API介绍及开发

开发者通过ArkTS提供的接口输出开发者需要的trace文件内容。

HiTrace Chain调用链设计

同一个设备内不同的软件层存在相互流转/调用,设备间存在分布式业务需要在各个设备之间流转,这样就给我们的业务故障定位带来非常大的麻烦,我们通常从日志中无法看出哪些日志是属于这个业务的,因此设计了业务链。

业务链就是在整个业务发起方发起的时候生成唯一的业务ID,业务ID会在跨进程、跨设备时随着业务流转。这样就能通过业务ID,将业务所有信息,包括日志、trace、event等关联起来,可以帮助开发者进行定位。

业务ID使用举例如下:

异常处理实践

异常处理框架

应用异常日志查询接口FaultLog

提供QuerySelfFaultLog接口以查询自身故障:

  • JS_CRASH:ArkTS程序故障类型
  • CPP_CRASH:C++程序故障类型
  • APP FREEZE:应用程序卡死故障类型

接口querySelfFaultLog(faultType: FaultType, callback: AsyncCallback<Array<FaultLoglnfo>>):void;接口使用举例如下:

JS_CRASH:ArkTS程序故障类型

日志内容说明如下图:

分析案例举例

CPP_CRASH:C++程序故障类型

日志内容说明如下图:

分析案例举例

混合栈拼接:TS调用C++后崩溃

拼接流程说明

日志内容说明

APP FREEZE:应用程序卡死故障类型

日志内容说明如下图:

分析案例举例

故障恢复实践

概述

我们在系统层去感知故障,包括js Crash、C++ Crash、AppFreeze、kill(某类资源过载后系统会主动杀死应用),对于感知到的故障,对外提供三类接口(异常通知、状态保存、状态恢复)通知应用。

异常通知接口举例

状态保存接口举例

状态恢复直接封装在onCreate方法,在应用启动时如果启动原因是恢复,则走恢复流程。接口举例

应用恢复API全集

应用异常恢复举例

Performance Analysis Kit简介

相关推荐
加农炮手Jinx12 小时前
Flutter for OpenHarmony 实战:JWT — 构建安全的无状态认证中心
网络·flutter·华为·harmonyos·鸿蒙
左手厨刀右手茼蒿12 小时前
Flutter for OpenHarmony: Flutter 三方库 hashlib 为鸿蒙应用提供军用级加密哈希算法支持(安全数据完整性卫士)
安全·flutter·华为·c#·哈希算法·linq·harmonyos
王码码203512 小时前
Flutter for OpenHarmony: Flutter 三方库 cryptography 在鸿蒙上实现金融级现代加解密(高性能安全库)
android·安全·flutter·华为·金融·harmonyos
亚历克斯神14 小时前
Flutter for OpenHarmony:Flutter 三方库 yaml_edit 精准修改 YAML 文件内容(保留注释与格式的编辑神器)
android·flutter·华为·harmonyos
加农炮手Jinx14 小时前
Flutter for OpenHarmony:image_picker 插件鸿蒙化适配指南
flutter·华为·harmonyos
左手厨刀右手茼蒿14 小时前
Flutter for OpenHarmony: Flutter 三方库 image_size_getter 零加载极速获取图片尺寸(鸿蒙 UI 布局优化必备)
android·服务器·flutter·ui·华为·harmonyos
亚历克斯神14 小时前
Flutter for OpenHarmony:zxing2 纯 Dart 条码扫描与生成库(不仅是扫码,更是编解码引擎) 深度解析与鸿蒙适配指南
android·flutter·华为·harmonyos
钛态14 小时前
Flutter for OpenHarmony:dio_cookie_manager 让 Dio 发挥会话管理能力,像浏览器一样自动处理 Cookie 深度解析与鸿蒙适配指南
android·linux·运维·flutter·ui·华为·harmonyos
王码码203514 小时前
Flutter for OpenHarmony:Flutter 三方库 bluez 玩转 Linux 风格的蓝牙操作(蓝牙底层互操作)
linux·运维·服务器·前端·flutter·云原生·harmonyos
雷帝木木14 小时前
Flutter for OpenHarmony:Flutter 三方库 money2 — 坚不可摧的鸿蒙金融核心组件
网络·flutter·http·华为·金融·harmonyos·鸿蒙