鸿蒙开源第三方组件——ANR异常监测组件 ANR-WatchDog-ohos

前言 

          基于安卓平台的消息弹框组件ANR-WatchDog(https://github.com/SalomonBrys/ANR-WatchDog),实现鸿蒙化迁移和重构。代码已经开源到(https://gitee.com/isrc_ohos/anr-watch-dog-ohos),欢迎各位下载使用并提出宝贵意见!

背景 

          ANR-WatchDog-ohos是一个监测组件,可以监测鸿蒙应用的ANR(Application Not Response-应用程序无响应)错误,并能及时抛出异常。在此组件被移植成功之前,鸿蒙应用程序是无法捕获和报告ANR错误的,调查ANR的唯一方法是查看/data/anr/traces.txt文件。因此ANR-WatchDog-ohos为ANR捕获过程提供了更好的交互性、便捷性以及可视化的效果,同时也提升了程序的健壮性。

组件效果展示

      1、组件应用的界面介绍

      为了更好的向开发者展示组件的运行效果,先来了解一下组件应用中各按钮的含义。在图1中,蓝色框内是ANR的监测模式设置按钮,红色框内的是ANR模拟按钮。下面具体解释各按钮的含义:

  • Min ANR duration:阻塞响应时间按钮。开发者通过点击按钮设置阻塞响应时间为2秒、4秒或6秒,即应用阻塞2秒、4秒或6秒后,执行特定的响应行为。
  • Report mode:报告模式按钮。开发者通过点击按钮设置ANR发生时,HiLog中输出错误报告的模式:All Threads表示输出每个线程的错误日志;Main thread only                                表示只输出主线程的错误日志;Filtered表示只输出符合特定过滤条件的线程的错误日志。
  • Behaviour:响应行为按钮。开发者通过点击按钮设置ANR发生时应用的响应行为:Crash表示应用闪退;Silent表示开发者自定义应用的响应行为。
  • Thread Sleep:可以模拟主线程休眠。
  • Infinite loop:可以模拟主线程无限循环。
  • Dead lock:可以模拟主线程死锁。

鸿蒙开源第三方组件——ANR异常监测组件 ANR-WatchDog-ohos-鸿蒙HarmonyOS技术社区图1 ANR-WatchDog-ohos组件应用的界面介绍

2、组件运行效果展示

        通过点击图1红色框内三个不同的按钮,可以看到三种不同的ANR发生时组件的运行效果。为了更清楚的展现检测模式的作用,我们给每个ANR模拟按钮设置不同的检测模式。下面对组件的运行效果进行详细描述:

1、线程休眠

        ANR监测模式:阻塞响应时间为2秒,报告模式为All Threads、响应行为Crash。

        点击Thread Sleep按钮,启动主线程休眠后,ANR-WatchDog-ohos组件监测到程序在2秒内一直无响应,于是触发应用闪退,并通过HiLog报告所有线程的ANR详情,其模式设置和执行效果如图2所示。

        在报告中,可以根据“Caused by”后面的堆栈信息追踪查看线程休眠的具体原因,如图3所示。

图2 线程休眠设置流程和执行效果

鸿蒙开源第三方组件——ANR异常监测组件 ANR-WatchDog-ohos-鸿蒙HarmonyOS技术社区

图3 监测线程休眠后闪退输出的HiLog信息

2、线程无限循环

        ANR监测模式:阻塞响应时间为4秒,报告模式为All Threads、响应行为Crash。

        点击Infinite loop按钮,启动线程无限循环后,ANR-WatchDog-ohos组件监测到程序在4秒内一直无响应,于是触发应用闪退,并通过HiLog报告主线程的ANR错误详情,其监测模式设置和执行效果如图4所示,HiLog报告主线程的ANR详情如图5所示。

图4 线程无限循环设置流程和执行效果

鸿蒙开源第三方组件——ANR异常监测组件 ANR-WatchDog-ohos-鸿蒙HarmonyOS技术社区

 图5 监测线程无限循环后闪退输出的HiLog信息

3、线程死锁

        ANR监测模式:阻塞响应时间为6秒,报告模式为Filtered(只报告以“APP:”为前缀的线程)、响应行为Crash。

       点击Dead lock按钮,启动线程死锁后,ANR-WatchDog-ohos组件监测到程序在6秒内一直无响应,于是触发应用闪退,并通过HiLog报告以“APP:”为前缀线程的ANR错误详情,其监测模式设置和执行效果如图6所示,HiLog报告主线程的ANR详情如图7所示。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值