赞
踩
基于安卓平台的消息弹框组件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模拟按钮。下面具体解释各按钮的含义:
图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 线程休眠设置流程和执行效果
图3 监测线程休眠后闪退输出的HiLog信息
2、线程无限循环
ANR监测模式:阻塞响应时间为4秒,报告模式为All Threads、响应行为Crash。
点击Infinite loop按钮,启动线程无限循环后,ANR-WatchDog-ohos组件监测到程序在4秒内一直无响应,于是触发应用闪退,并通过HiLog报告主线程的ANR错误详情,其监测模式设置和执行效果如图4所示,HiLog报告主线程的ANR详情如图5所示。
图4 线程无限循环设置流程和执行效果
图5 监测线程无限循环后闪退输出的HiLog信息
3、线程死锁
ANR监测模式:阻塞响应时间为6秒,报告模式为Filtered(只报告以“APP:”为前缀的线程)、响应行为Crash。
点击Dead lock按钮,启动线程死锁后,ANR-WatchDog-ohos组件监测到程序在6秒内一直无响应,于是触发应用闪退,并通过HiLog报告以“APP:”为前缀线程的ANR错误详情,其监测模式设置和执行效果如图6所示,HiLog报告主线程的ANR详情如图7所示。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。