写点什么

鸿蒙智联设备开发,这五大法宝你应该拥有|HDC2021 技术分论坛

  • 2021 年 12 月 07 日
  • 本文字数:2397 字

    阅读完需:约 8 分钟

鸿蒙智联设备开发,这五大法宝你应该拥有|HDC2021技术分论坛

作者:zhaowenguang,dinglu,华为高级工程师

Huawei LiteOS 是轻量级的开源物联网操作系统、智能硬件使能平台,可广泛应用于智能家居、穿戴式、车联网、制造业等领域,使物联网终端开发更简单、互联更加容易、业务更加智能、体验更加顺畅、数据更加安全。

它具有入门简单、开发便捷,轻量级、低功耗、广联接,生态体系完善等优点。提供了若干高效硬件维测能力,通过集成到 DevEco Device Tool 中,形成了可供开发者使用的调试调优工具,助力开发者在鸿蒙智联设备调试调优过程中更加精准的分析、定位问题。

接下来,我们将重点介绍 DevEco Device Tool 中集成的一系列调试调优工具。

一、鸿蒙智联设备调试调优面临的挑战

开发者在鸿蒙智联设备调试调优过程中面临如下挑战:

  • 系统镜像文件太大,分析和优化难度较大。

  • 运行态内存紧缺,系统各任务栈大小无法设置。

  • 性能瓶颈无法定位,不能针对性的进行优化。

  • 仅仅靠添加打印和人工分析日志来定位问题效率低下。

  • 内存问题最难定位,缺少检测工具。

如何应对这些挑战,让开发者能高效且准确的完成鸿蒙智联设备调试调优?

二、高效调试调优五大法宝

针对以上挑战,HUAWEI DevEco Device Tool 版本中提供了鸿蒙智联设备调试调优五大法宝:镜像分析工具、栈估算分析工具、性能分析工具、可视化 Trace 工具、轻量级内存检测工具,下面我们将逐一介绍。

注:镜像分析工具和栈估算分析工具已集成于 HUAWEI DevEco Device Tool 3.0 Beta1 版本中,目前只支持 GCC 编译的镜像,Clang 暂不支持。性能分析工具、可视化 Trace 工具及轻量级内存检测工具将尽快上线,具体上线时间待官方通知。

1. 镜像分析工具

镜像分析工具,主要解决“资源受限情况下镜像的分析及优化”。通过对编译生成的 map 文件进行内存占用分析,获取镜像中各模块对 ROM、RAM 的占用大小。

该工具支持查看内存区域总览、内存详细信息、文件大小及模块大小。同时支持一些统计功能,包括排序、过滤、导出表格等操作以及按文件或模块筛选查看的功能。镜像分析结果按照内存区域、详细信息、文件大小和模块大小 4 个界面进行展示。

  • Memory Regions:内存区域界面以表格的形式展示了每个区域的内存使用情况。如图 1 所示,Memory Regions 包含了起始地址、结束地址、大小、可用内存以及内存占用。

图 1 Memory Regions

  • Memory Details:内存详细信息里显示了 Section 和 Symbol 的信息。如图 2 所示,Memory Details 通过树状表格展示层级关系、名称、VMA、LMA 以及 Size。

图 2 Memory Details

  • File Size:文件大小里展示了.a 文件和.o 文件的层级关系以及不同 section 的内存占用。

  • Module Size:模块大小里展示了模块和组件的层级关系以及不同 section 的内存占用。

使用该工具可帮助开发者快速评估并优化镜像的 ROM、RAM 使用情况。

2. 栈估算分析工具

栈估算分析工具,主要解决“运行态内存紧缺情况下系统各任务栈的设置”。通过遍历反汇编文件,计算函数的局部栈开销并分析函数之间的调用关系,从而估算出任务的栈大小,为栈溢出分析、栈空间优化提供基础的数据参考。

该工具提供函数调用关系图、函数总的最大栈开销、内部开销,并提供展示函数所在具体位置。栈分析结果按照函数列表和调用关系进行展示。

  • Function List:函数列表界面显示每个函数的函数名称和函数内部栈开销,如图 3 所示。

图 3 Function List

  • Call Graph:调用关系界面显示每个函数的调用关系,包括函数名称、调用深度、函数最大栈开销。

使用该工具可帮助开发者减少爆栈风险,节省内存优化栈空间。

3. 性能分析工具

性能分析工具,主要解决“性能瓶颈的定位及优化”。基于事件采样统计的原理,实现热点函数、热点路径的分析,助力识别性能瓶颈。

该工具提供计数模式及采样模式两种工作模式,采集事件发生的次数及执行时间以及上下文如 PC,回溯栈等,用于解析出热点函数与热点路径等信息。同时,该工具还支持 3 种类型的采样事件:

  • 硬件 PMU 事件:如 cycle,cache 等。

  • 软件打点采样:如中断、内存申请等。

  • 高精度周期事件:即按固定周期采样,精度 us 级。支持热点函数及热点路径的查看。

图 4 性能分析工具界面

使用该工具可帮助开发者快速有效识别性能瓶颈,辅助系统性能优化。

4. 可视化 Trace 工具

可视化 Trace 工具,主要解决“程序运行不符合预期情况下的问题定位”。通过采用静态代码桩和缓冲区记录的方式,在桩被执行时,获取事件发生的上下文、系统任务等信息,并记录到缓冲区,帮助开发者了解何时何处发生的什么事件。

该工具以图形界面展示事件详情、CPU 占比、内存趋势图、任务切换轨迹等信息。下面是 Trace 可视化的 4 个界面:

  • 事件信息视图:如图 5 所示。使用自然语言解释系统何时(时间戳)何处(在哪个 CPU 的那个任务中)发生的具体事件。

图 5 时间信息视图

  • 任务轨迹视图:如图 6 所示。以系统时间为纵坐标,展示任务切换的轨迹,如图,不同颜色表示不同的任务,不同色块的迁移对应一次任务切换,点击色块会显示导致任务切换的原因,色块的长度对应其运行的时长。

图 6 任务轨迹视图

  • CPU 负载视图:如图 7 所示。统计任意时间段内的任务执行 cpu 占比,不同颜色对应不同的任务。

图 7 CPU 负载视图

  • 内存监控视图:如图 8 所示。以系统时间为横坐标,展示随时间变化的系统内存使用情况。

图 8 内存监控视图

使用该工具可帮助开发者清晰的了解系统运行的轨迹,更好的理解系统、辅助定位死机死锁问题。

5. 轻量级内存检测工具

轻量级内存检测工具,主要解决“一键定位内存问题”。该工具基于影子内存映射和标记的原理,可快速解决内存越界访问、释放后访问、多重释放等疑难杂症,并且在检测到错误后实时打印回溯栈。如图 9 所示,轻量级内存检测工具结合 backtrace,快速一键式定位问题代码段。

图 9 定位到出错的代码行号

使用该工具可帮助开发者根据回溯栈一键定位到出错的代码行号。

以上就是本期全部内容,相信五大法宝定能让你在鸿蒙智联设备开发的道路上披荆斩棘,赶快点击下方链接下载试用吧!

HUAWEI DevEco Device Tool 3.0 Beta1 下载链接:https://device.harmonyos.com/cn/develop/ide#download_beta

用户头像

每一位开发者都是华为要汇聚的星星之火 2021.10.15 加入

提供HarmonyOS关键技术解析、版本更新、开发者实践和活动资讯,欢迎各位开发者加入HarmonyOS生态,一起创造无限可能!

评论

发布
暂无评论
鸿蒙智联设备开发,这五大法宝你应该拥有|HDC2021技术分论坛