鸿蒙应用稳定性是影响用户体验的重要因素之一,常见的稳定性问题包括:崩溃、应用Freeze、内存泄漏、内存越界等。这类问题的定界与定位往往需要丰富的经验积累和技术沉淀,定位过程通常耗时耗力。
下面以CppCrash的问题为例,介绍一下如何根据新上线的“稳定性”专栏分析和定位稳定性问题。

对于由内存错误引起的运行态问题,我们可以选择稳定性专栏目录下的稳定性检测/运行态检测/内存检测中介绍的工具。
此处我们选择使用HWAsan检测内存错误的章节,根据章节的内容描述,我们勾选DevEco Studio中的HWAsan功能,开启HWAsan检测之后,点击run重新运行编译推包,编译工具会将HWAsan检测开关打开,同时对Cpp代码进行插桩,增加调试信息。
重新运行编译推包之前产生CppCrash的程序,应用发生闪退,弹出FaultLog。
通过勾选HWasan后产生的FaultLog我们可以看到,该日志在提供出错代码片段跳转链接的同时,还通过Cause部分进一步确定了该Crash是由heap-buffer-overflow导致的。根据Cause原因,在使用HWAsan检测内存错误文章中找到HWasan异常检测类型中对应的类型,可明确该错误是由运行程序访问堆内存越界导致的。通过稳定性中该章节的指导,大大降低了我们对CppCrash日志的解读难度与相关内存问题定位的门槛,同时也节省了排查可疑问题类型的时间。
此外,专栏还提供了稳定性分析的内容,该部分列举了常见场景中问题的排查方法与案例分析,如果我们开发过程中可以确定稳定性问题的具体场景,就可以参考相应场景的排查方法来对问题进行定位,如上述CppCrash的例子就是地址越界的场景,可以看到地址越界问题排查方法部分也可以开启HWAsan检测。而关于案例分析部分,则是以实际案例,来帮助我们开发者更好的理解并应用不同场景下的问题排查方法。
除了上述解决应用致命稳定性问题的稳定性检测与分析章节,该专栏还包含了如何持续建设应用稳定性的内容,即稳定性优化与稳定性运维两个部分,稳定性优化主要从规范性的角度出发,介绍了如何通过良好的编码习惯和有效的日志维护方案来提升应用的健壮性和定位效率;稳定性运维则是从应用上线并长期使用/运行的角度的出发,概述如何构建管理平台,帮助我们开发者监控应用的运行状态,从而及时发现并解决应用潜在问题。
免责声明:该文章系本站转载,旨在为读者提供更多信息资讯。所涉内容不构成投资、消费建议,仅供读者参考。