HarmonyOS官网上线“稳定性”专栏 助力更稳定流畅的鸿蒙原生应用开发

你的代码还在‘裸奔’?ASan & HWASN 内存漏洞修复实践(二)应用实例 本文介绍ARM平台下多种HWASan安装方案,并详细介绍了hwasan的编译、运行时配置选项和内存泄露检查的使用实例 阅读详情

鸿蒙应用稳定性是影响用户体验的重要因素之一,常见的稳定性问题包括:崩溃、应用Freeze、内存泄漏、内存越界等。这类问题的定界与定位往往需要丰富的经验积累和技术沉淀,定位过程通常耗时耗力。

最近,在鸿蒙开发者官网的最佳实践中上线了稳定性专栏,将DevEco Studio问题定位工具与稳定性实际场景相结合,帮助开发者用好工具的同时,降低稳定性问题定位的难度。

下面以CppCrash的问题为例,介绍一下如何根据新上线的“稳定性”专栏分析和定位稳定性问题。

当我们在开发中遇到了CppCrash问题,应用会闪退,FaultLog会弹出对应的错误日志:红色Reason部分为CppCrash触发的原因,该Crash的原因是系统抛出的SIGSEGV信号Crash了运行的应用。通常情况下点击蓝色的链接部分,可以跳转到对应出错的代码行。通过SIGSEGV信号量判断出代码中存在无效的内存引用,一般为下面三种情况:访问空指针、访问已经释放的内存和内存访问越界。但具体是哪种情况触发的应用闪退,还需要我们根据相应代码片段进行具体分析,较为耗时。我们可以参考稳定性专栏中的相关内容,来降低定位难度并缩减定位时间。

对于由内存错误引起的运行态问题,我们可以选择稳定性专栏目录下的稳定性检测/运行态检测/内存检测中介绍的工具。

此处我们选择使用HWAsan检测内存错误的章节,根据章节的内容描述,我们勾选DevEco Studio中的HWAsan功能,开启HWAsan检测之后,点击run重新运行编译推包,编译工具会将HWAsan检测开关打开,同时对Cpp代码进行插桩,增加调试信息。

重新运行编译推包之前产生CppCrash的程序,应用发生闪退,弹出FaultLog。

通过勾选HWasan后产生的FaultLog我们可以看到,该日志在提供出错代码片段跳转链接的同时,还通过Cause部分进一步确定了该Crash是由heap-buffer-overflow导致的。根据Cause原因,在使用HWAsan检测内存错误文章中找到HWasan异常检测类型中对应的类型,可明确该错误是由运行程序访问堆内存越界导致的。通过稳定性中该章节的指导,大大降低了我们对CppCrash日志的解读难度与相关内存问题定位的门槛,同时也节省了排查可疑问题类型的时间。

此外,专栏还提供了稳定性分析的内容,该部分列举了常见场景中问题的排查方法与案例分析,如果我们开发过程中可以确定稳定性问题的具体场景,就可以参考相应场景的排查方法来对问题进行定位,如上述CppCrash的例子就是地址越界的场景,可以看到地址越界问题排查方法部分也可以开启HWAsan检测。而关于案例分析部分,则是以实际案例,来帮助我们开发者更好的理解并应用不同场景下的问题排查方法。

除了上述解决应用致命稳定性问题的稳定性检测与分析章节,该专栏还包含了如何持续建设应用稳定性的内容,即稳定性优化与稳定性运维两个部分,稳定性优化主要从规范性的角度出发,介绍了如何通过良好的编码习惯和有效的日志维护方案来提升应用的健壮性和定位效率;稳定性运维则是从应用上线并长期使用/运行的角度的出发,概述如何构建管理平台,帮助我们开发者监控应用的运行状态,从而及时发现并解决应用潜在问题。

更多详细内容可在鸿蒙开发者官网->开发-> 开发文档->最佳实践下进入“稳定性”专栏,希望无论是初学者还是资深开发者,都能在这里有所收获,开发出更稳定流畅的鸿蒙原生应用。

想要深入了解什么是技术共建,或与我们共同探讨技术创新。欢迎加入我们的技术共建交流群,我们将与志同道合的开发者一起交流、分享与成长!扫码加入群聊,开启技术共建之旅!

Marvell 88Q6113 如何制作一个完整的量产固件88Q6113_flash.bin并进行烧录 本章节介绍如何基于Marvell工具链,制作一个完整的量产固件88Q6113_flash.bin,集成用户自定义的配置文件 config.bin,用于88Q6113的Flash烧录。注:Marvell 88Q5072 与 Marvell 88Q6113 的配置流程是一样的。 阅读详情

相关推荐

SwinIR实战:从环境搭建到模型训练的全流程解析

本文提供了SwinIR超分辨率模型从零开始的全流程实战指南。详细解析了基于PyTorch和Anaconda的环境搭建、数据准备与配置文件修改、训练启动与常见错误排查(如张量尺寸不匹配),以及模型评估方法,帮助读者高效部署并训练SwinIR模型。

weixin_28224217的博客 319

从写代码到写Prompt,解锁鸿蒙原生应用高效开发秘籍

同时,部署领域也实现了左移,百度与营销服务团队合作的部署插件,将线下环境的部署过程左移到了文心快码中,通过文心快码调用部署插件,可以实现快速部署,单次部署耗时可以节省 10 秒以上,线下环境的 API 更新效率也提升了3倍,成效显著。在这一背景下,中国开发者需要一个全新的平台,这个平台不仅仅是一个单一的技术或产品,而是一个全面的生态系统,涵盖应用程序、操作系统以及各种硬件设备,能够为用户提供全方位的服务。当前,大模型正在重新定义软件工程,不仅促进了软件开发的民主化,也推动了开发工具的智能化发展。

weixin_37005230的博客 143

泰克示波器TDS210改装便携示波器

泰克示波器TDS210改装编写示波器

超级网吧的博客 3079

用 DevEco Studio 模拟器这些能力 没真机也能高效调测鸿蒙原生应用

其次,模拟器能快速复现复杂应用场景,特别是在定位、导航、低电量提示等关键应用场景中,开发者无需编写额外的测试代码或实地测试,大幅简化调测流程。随着鸿蒙生态的快速发展,越来越多的开发者投身于鸿蒙原生应用的开发中。为解决这些问题,华为在DevEco Studio上为开发者提供了模拟器(Emulator)功能,帮助开发者在真机匮乏或无真机时,高效且低成本地完成应用开发与调试。过去,开发者需携带真机实地测试或编写代码来模拟,如今在模拟器上,仅通过输入经纬度、选择城市,就能便捷模拟任意定位,开发效率显著提升。

weixin_40777166的博客 122

trae使用playwright MCP方法流程

trae使用playwright MCP方法流程

MAILLIBIN的专栏 1677

【开源】基于TI ADS1299与ESP32的8通道脑电采集设备YuEEG全解析

本文详细解析了基于TI ADS1299芯片与ESP32主控的开源8通道脑电采集设备YuEEG。内容涵盖硬件设计、固件驱动开发及Python上位机软件实现,提供了从电路连接、SPI通信配置到数据读取与实时波形显示的全套教程。该项目为学习脑机接口(BCI)与高精度生物电信号采集提供了完整的开源解决方案,适合创客、学生及嵌入式开发者实践。

weixin_42576410的博客 1233

鸿蒙原生开源库 ViewPool 在 OpenHarmony 社区正式上线

此外,ViewPool的发布也为OpenHarmony引入了新的性能优化方案,进一步激发了开发者的创新潜力,加速了整个生态的发展进程。据了解,合作伙伴还计划参与开发更多OpenHarmony原生三方库(例如数据库相关解决方案等),并探索更丰富的场景化应用,持续为OpenHarmony社区注入新的发展动力。这一趋势为开发者和厂商提供了广阔的合作空间。通过共同参与OpenHarmony原生三方库的孵化和建设,各方将有机会推动技术创新,完善生态布局,共享开放生态的技术成果,共同迈向万物智联的智能未来。

weixin_41460287的博客 60

STM实战开发(13):STM32开发:使用光敏电阻检测光照强度

光敏电阻(LDR)是一种电阻值受光照强度影响的半导体材料。当光照强度增大时,光敏电阻的电阻值降低;而当光照强度减小时,电阻值则增大。光敏电阻的电阻变化与入射光的强度之间并不是线性关系,而是呈对数型的变化。LDR通常由硫化镉(CdS)或其他半导体材料构成,材料对不同波长的光有不同的响应特性。一般而言,光照强度越强,光敏电阻的电阻值越低,反之则越高。本文介绍了如何使用STM32与光敏电阻(LDR)结合,进行光照强度检测的实现方法。通过配置STM32的ADC模块,读取光敏电阻的电压信号,并根据电压计算光照强度。

2201_76125393的博客 3017
上一篇: HarmonyOS 应用开发赋能套件:鸿蒙原生应用开发的 “神助攻”
下一篇: DevEco Studio构建分析工具Build Analyzer 为原生鸿蒙应用开发提速
「已注销」
博客等级 码龄5年 1045粉丝 297原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

「已注销」

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值