🏡作者主页:点击!
🤖HarmonyOS专栏:点击!
⏰️创作时间:2024年12月11日12点12分
HiTraceMeter
HiTraceMeter提供系统性能打点接口。开发者通过在关键代码位置调用HiTraceMeter接口提供的API接口,能够有效跟踪进程轨迹、查看系统性能
HiTraceMeter Tag:跟踪数据使用类别分类,称作HiTraceMeter Tag或HiTraceMeter Category
每个软件子系统对应一个Tag,该Tag在打点API中以类别Tag参数传入
HiTraceMeter命令行工具采集跟踪数据时,只采集给定的Tag类别选项指定的跟踪数据
实现原理
- 应用程序通过HiTraceMeter函数接口进行打点,HiTraceMeter函数将跟踪数据通过内核 sysfs 文件接口输出到内核的 ftrace数据缓冲区。
- HiTraceMeter命令行工具读取内核ftrace缓冲区中的跟踪数据,将文本格式的跟踪数据保存到设备侧的文件中
HiTraceMeter打点接口按功能/行为分类,主要分三类:同步时间片跟踪接口、异步时间片跟踪接口和整数跟踪接口
无论同步时间片跟踪接口还是异步时间片跟踪接口,接口本身都是同步接口,不是异步接口,都用在同一线程中,不支持跨线程打点和分析
- 同步时间片跟踪接口用于顺序执行的打点场景,目前ArkTS/JS暂未提供相关接口。
- 异步时间片跟踪接口用于在操作调用前开始打点,在操作完成后进行结束打点。异步跟踪的开始和结束由于不是顺序发生的,解析trace时需要通过唯一的taskid进行识别,taskid作为异步跟踪trace接口的参数传入。
- 整数跟踪接口用于跟踪数值变量
HiTrace
HiTrace为开发者提供业务流程调用链跟踪的维测接口。该接口所提供的功能,可以帮助开发者迅速获取指定业务流程调用链的运行日志、定位跨设备/跨进程/跨线程的故障问题
查看HITraceMeter
- 执行hilog -b D,修改日志打印级别。
- 执行hilog |grep hitrace即可查看hitrace相关日志
HiTraceChain
HiTraceChain是基于云计算分布式跟踪调用链思想,在端侧业务流程(涉及跨线程、跨进程、跨设备)中的一种轻量级实现
chainId:分布式跟踪标识,属于HiTraceId的一部分,用于标识当前跟踪的业务流程
跨进程/跨设备分布式跟踪依赖于HarmonyOS各模块相应业务接口的napi实现是否存在进程及设备之间的通信调用
错误管理
错误管理开发
应用的代码存在规范问题或错误时,会在运行中产生异常和错误,如应用未捕获异常、应用生命周期超时等
使用errormanager接口监听异常和错误后,应用不会退出,建议在回调函数执行完后,增加同步退出操作,如果只是为了获取错误日志,建议使用 hiappevent
应用错误管理接口由 errorManager 模块提供,开发者通过 import 引入
当采用callback作为异步回调时,可以在callback中进行下一步处理。当采用Promise对象返回时,可以在Promise对象中类似地处理接口返回值
应用恢复开发
应用在运行中不可避免会产生一些非预期的行为,如运行时抛出未处理的异常和错误,违反框架的调用/运行约束等
应用故障恢复接口由appRecovery模块提供,开发者可以通过import引入
故障分析
JS Crash多为应用问题,开发者可通过崩溃文件中的 Error message 和 StackTrace 来定位问题
问题定位思路
- 通过DevEco Studio获取日志
- 通过 HiAppEvent 接口订阅