作者: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应用状况。

  1. 栈估算剖析工具
    栈估算剖析工具,次要解决“运行态内存紧缺状况下零碎各工作栈的设置”。通过遍历反汇编文件,计算函数的部分栈开销并剖析函数之间的调用关系,从而估算出工作的栈大小,为栈溢出剖析、栈空间优化提供根底的数据参考。

该工具提供函数调用关系图、函数总的最大栈开销、外部开销,并提供展现函数所在具体位置。栈剖析后果依照函数列表和调用关系进行展现。

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

图3 Function List

Call Graph:调用关系界面显示每个函数的调用关系,包含函数名称、调用深度、函数最大栈开销。
应用该工具可帮忙开发者缩小爆栈危险,节俭内存优化栈空间。

  1. 性能剖析工具
    性能剖析工具,次要解决“性能瓶颈的定位及优化”。基于事件采样统计的原理,实现热点函数、热点门路的剖析,助力辨认性能瓶颈。

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

硬件PMU事件:如cycle,cache等。
软件打点采样:如中断、内存申请等。
高精度周期事件:即按固定周期采样,精度us级。反对热点函数及热点门路的查看。

图4 性能剖析工具界面

应用该工具可帮忙开发者疾速无效辨认性能瓶颈,辅助零碎性能优化。

  1. 可视化Trace工具
    可视化Trace工具,次要解决“程序运行不合乎预期状况下的问题定位”。通过采纳动态代码桩和缓冲区记录的形式,在桩被执行时,获取事件产生的上下文、零碎工作等信息,并记录到缓冲区,帮忙开发者理解何时何处产生的什么事件。

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

事件信息视图:如图5所示。应用自然语言解释零碎何时(工夫戳)何处(在哪个CPU的那个工作中)产生的具体事件。

图5 工夫信息视图

工作轨迹视图:如图6所示。以零碎工夫为纵坐标,展现工作切换的轨迹,如图,不同色彩示意不同的工作,不同色块的迁徙对应一次工作切换,点击色块会显示导致工作切换的起因,色块的长度对应其运行的时长。

图6 工作轨迹视图

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

图7 CPU负载视图

内存监控视图:如图8所示。以零碎工夫为横坐标,展现随工夫变动的零碎内存应用状况。

图8 内存监控视图

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

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

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

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

以上就是本期全部内容,置信五大法宝定能让你在鸿蒙智联设施开发的路线上乘风破浪,赶快点击下方链接下载试用吧!

HUAWEI DevEco Device Tool 3.0 Beta1下载链接:https://device.harmonyos.com/...