崩溃监控
初始化完成后,可以模拟崩溃进行上报,如执行以下调用。
Bugly.testCrash(Bugly.JS_CRASH); // 模拟Js异常Bugly.testCrash(Bugly.CPP_CRASH); // 模拟native异常
说明:
异常问题发生后,需要二次启动 Hap 应用,即可完成上报。
Crash 异常会上报 FaultLog 信息,可在
附件 tab 的 crashInfos.txt 文件中查看。Freeze 监控
与崩溃类似,可以通过终端性能监控 Pro 提供的测试接口来模拟 Freeze,调用后适当滑动屏幕,系统将判定为当前进程 Freeze。
Bugly.testCrash(Bugly.APP_FREEZE); // 模拟Freeze异常
或是在 UI 线程中执行耗时逻辑,触发 ANR。
let index = 0while (true) {index++index = index % 2}
说明:
Freeze 异常上报的是 Native、arkTs 混合堆栈。
Freeze 异常会上报 FaultLog 信息及主线程消息信息,可在 附件 tab 的
crashInfos.txt 文件中查看。event_handler 表示主线程未处理消息。event_handler_size_3s 表示 THREAD_BLOCK 事件3s时任务栈中任务数。event_handler_size_6s 表示 THREAD_BLOCK 事件6s时任务栈中任务数。peer_binder 表示 binder 调用信息。卡顿监控
卡顿指标(FPS、挂起率)
注意:
确保卡顿指标模块开启,需在 buglybuilder 初始化参数 enablePerfModules 中添加卡顿指标模块(looper_metric),同时在配置中设置卡顿指标的 sample_ratio 设备采样率,二者缺一不可。
建议测试时,配置设备采样率设为1,设置方式请参见 SDK 配置。
指标说明
FPS: 帧率,在应用运行时,GPU 和 CPU 合作可产生的图像数量,反映了 UI 图像刷新的频率,计量单位帧/秒(FramePerSecond,FPS),通常是评估硬件性能与应用流畅度的指标。
鸿蒙 FPS 的计算借鉴了 Android、iOS 实现方式,采用归一化的方式进行统计,以60HZ为基准,突出反映应用在影响用户体验(低于60HZ)运行时的状态,即应用越流畅,归一化 FPS 越接近60HZ,反之越低。
挂起率: 如果应用在主线程中的单条消息执行时间过长,则可能导致 UI 卡顿,此时认为应用不能很好地响应用户的交互,累计执行的时间到挂起时间中。一个设备的挂起率,指这个设备在一天中,总的挂起时间除以其前台总时长,单位是秒/小时。
验证上报
初始化卡顿指标能力并命中采样后,在
debug 模式下,可以看到如下日志,以判断卡顿指标已被开启。03-27 20:05:31.683 14562-14562 A00000/com.ten...looper_metric com.tencent.bugly I Jank metric module start!
在有多个页面切换,并切换前后台时,可以看到卡顿指标上报日志。
04-02 15:12:34.938 61473-61473 A00000/com.tencent.bugly/Bugly com.tencent.bugly I [Upload] upload Success, upload event: looper_metric, record id: a84630f6-ffb4-4d9b-8033-8c288507d58f.

说明:
卡顿指标以页面场景为统计维度,在应用有页面切换时记录指标数据,退至后台时上报数据。
应尽早初始化 SDK,才能及时开启卡顿指标的统计。如果 SDK 初始化时间较晚,将在用户下一次切前后台操作后开启采集。
卡顿个例
注意:
确保卡顿个例模块开启,需在
buglybuilder 初始化参数 enablePerfModules 中添加卡顿指标模块(looper_stack),同时在配置中设置卡顿指标的 sample_ratio 设备采样率,二者缺一不可。建议测试时,配置设备采样率设为1,设置方式请参见 SDK 配置。
个例说明
卡顿堆栈监控能力基于系统 API 5.0.0(12) HiAppEvent 主线程超时事件开发,兼容 API 12及以上版本,默认超时时间150ms,抓栈次数固定10次,在进程生命周期中,仅会触发一次。详情请参见 鸿蒙主线程超时事件。
验证上报
初始化卡顿个例监控并命中采样后,在
debug 模式下,可以看到如下日志,以判断卡顿个例监控已被开启。03-27 20:05:31.683 14562-14562 A00000/com.ten...-looper_stack com.tencent.bugly I Jank monitor module start!
可通过在点击事件中连续触发以下代码,来构造触发卡顿事件。
let t = Date.now();while (Date.now() - t <= 350) {}
成功触发后,可看到如下上报日志,表明卡顿个例已成功上报。
04-02 16:06:24.405 61473-61473 A00000/com.ten...-looper_stack com.tencent.bugly I [Jank] jank event received!!! domain: OS04-02 16:06:24.406 61473-61473 A00000/com.ten...-looper_stack com.tencent.bugly I [Jank] event group name: MAIN_THREAD_JANK04-02 16:06:24.406 61473-61473 A00000/com.ten...-looper_stack com.tencent.bugly I [Jank] jank begin time: 1743581180178, end time: 1743581180530, log paths: ["/data/storage/el2/log/watchdog/MAIN_THREAD_JANK_20250402160622_61473.txt"]04-02 16:06:26.170 61473-61473 A00000/com.tencent.bugly/Bugly com.tencent.bugly I bugly do upload, type: 3, event: looper_stack04-02 16:06:26.453 61473-61473 A00000/com.tencent.bugly/Bugly com.tencent.bugly I [Upload] upload Success, upload event: looper_stack, record id: cd6623ba-e5e5-474d-b70b-bf087120aa44.
