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
HDC2021技术分论坛:鸿蒙智联设备开发,这五大法宝你应该拥有的更多相关文章
- HDC2021技术分论坛:如何高效完成HarmonyOS分布式应用测试?
作者:liuxun,HarmonyOS测试架构师 HarmonyOS是新一代的智能终端操作系统,给开发者提供了设备发现.设备连接.跨设备调用等丰富的分布式API.随着越来越多的开发者投入到Harmon ...
- HDC2021技术分论坛:组件通信、硬件池化,这些创新技术你get了吗?
作者:ligang 华为分布式硬件技术专家,sunbinxin 华为应用框架技术专家 HarmonyOS是一款全新的分布式操作系统,为开发者提供了元能力框架.事件通知.分布式硬件等分布式技术,使能开发 ...
- HDC2021技术分论坛:异构组网如何解决共享资源冲突?
作者:lijie,HarmonyOS软总线领域专家 相信大家对HarmonyOS的"超级终端"比较熟悉了.那么,您知道超级终端场景下的多种设备在不同环境下是如何组成一个网络的吗?这 ...
- HDC2021技术分论坛:进程崩溃/应用卡死,故障频频怎么办?
作者:jiwenqiang,DFX技术专家 提到开发一个产品,我们通常首先想到的是要实现什么样的功能,但是除了功能之外,非功能属性也会很大程度上影响一个产品的体验效果,比如不定时出现的应用卡死.崩溃 ...
- HDC2021技术分论坛:“积木拼装”,HarmonyOS弹性部署大揭秘!
作者:peitaiyi,华为终端OS产品交付专家 HarmonyOS是一款面向万物互联时代的.全新的分布式操作系统.在传统的单设备系统能力基础上,HarmonyOS提出了基于同一套系统能力.适配多种终 ...
- HDC技术分论坛:HarmonyOS新一代UI框架的全面解读
作者:yuzhiqiang,UI编程框架首席技术专家 在Harmony 3.0.0开发者预览版中,包含了新一代的声明式UI框架ArkUI 3.0.多语言跨平台编译器ArkCompiler 3.0.跨端 ...
- 智联招聘 卓聘IM演进过程
1. 卓聘IM开发背景 智联卓聘是智联旗下高端人才招聘平台,成立快4年了,业务增涨每年以100%速度增涨,业务增涨快在开发和上线速度要求也比较高. 2016年6月提出IM开发需求,7月初上线,开发人 ...
- 智联卓聘 卓聘IM(聊聊)开发实践
1. 卓聘IM开发背景 智联卓聘是智联旗下高端人才招聘平台,成立快4年多,业务增涨每年以100%速度增涨快,同时对产品和研发速度都比较高. 2015年提出IM开发,主要用于后选人与猎头及时交流,降低 ...
- 2019 智联招聘java面试笔试题 (含面试题解析)
本人5年开发经验.18年年底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴.今日头条.智联等公司offer,岗位是Java后端开发,因为发展原因最终选择去了智联,入职一年时间了,之前面试了很多家公 ...
- 最新 智联java校招面经 (含整理过的面试题大全)
从6月到10月,经过4个月努力和坚持,自己有幸拿到了网易雷火.京东.去哪儿.智联等10家互联网公司的校招Offer,因为某些自身原因最终选择了智联.6.7月主要是做系统复习.项目复盘.LeetCode ...
随机推荐
- 【Azure API 管理】APIM添加Log-to-eventhub的策略后,一些相关APIM与Event Hub的问题
问题描述 1) APIM 到Event Hub 写入日志是否有数量限制,比如每秒最大写入数量: 2) 是否可以在同一个APIM配置多个Event Hub,如果可以该APIM写入日志的峰值是 ...
- 2.Canal连接MQ
1. 配置文件介绍 Canal的启动,是以创建实例(instance)的方式,每个实例都有自己单独的工作环境, 而配置也分成两个部分 canal.properties (系统根配置文件) instan ...
- Java 重写equals
1 package com.bytezreo.objectclass; 2 /** 3 * 4 * @Description 重写equals 5 * @author Bytezero·zhengle ...
- kafka的简单架构
定义 Kafka 是一个分布式的基于发布/订阅模式的消息队列(Message Queue) , 主要应用于大数据实时处理领域. 1) Producer : 消息生产者,就是向 kafka broker ...
- docker部署监控Prometheus+Grafana
目录 一.Prometheus简介 二.Prometheus基本原理 三.Prometheus架构图 四.Prometheus特性 五.Prometheus组件 六.Prometheus服务发现 七. ...
- npm包(npm install --legacy-bundling) 通过npm-pack-all 打包tgz,放到内网(不联网)nexus发布(npm publish)
npm包(npm install --legacy-bundling) 通过npm-pack-all 打包tgz,放到内网(不联网)nexus发布(npm publish) 需求 内网不联网,安装指定 ...
- 英语单词 重读 注意第六条 类似tion前面的重读这种的
单词音节重读的10个基本判断规则: 1.一个单词只有一个重读音节 无论该单词有多少个音节(syllable),其重读音节只有一个,而且都在元音上,辅音不重读.单音节词也重读,只是省略了重音符号.如:b ...
- Spring 中不得不了解的姿势
说明 本文非原创,我只是进行了整理以及做了一些改动,仅供学习,若需进行商业使用,请联系原作者 原作者:苏三 原文链接:苏三说技术:Spring系列 Spring IOC 本章节解读的流程为Spring ...
- Prometheus组件构成及介绍
Prometheus是一个开源的监控和告警工具包,其常用的组件主要包括以下几个部分: Prometheus Server 功能:Prometheus Server是Prometheus的核心组件,负责 ...
- STM32 SPI DMA 源码解析及总结
一 前言 最近在调试stm32的SPI时候i,遇到了一个非常诡异的问题.中间花费了不少时间才把问题搞定.这中间暴露的问题值得反思.借此机会,还是梳理一下stm32的SPI的代码做一个总结吧. 二 初始 ...