HDC2021技术分论坛(分布式调试、调优能力解决方案)
作者:yangjianwei 华为高级工程师
HarmonyOS致力于提供1+8+N智慧全场景解决方案,打造设备流转、多端协同的分布式体验,实现一次开发、多端部署,让分布式应用的开发更加简单。
针对分布式应用的调试问题,DevEco Studio提供了分布式调试、调优能力解决方案,解决开发者面临的调试不连续、操作繁琐、功能和性能异常难定位等众多痛点问题。下面让我们先来一睹为快。
注:本文涉及的DevEco Studio分布式调试和调优的部分能力依赖于OS接口,计划将在HarmonyOS 3.0 Beta版本系统发布后才能支持。
一、分布式调试能力
DevEco Studio将为开发者提供分布式调试能力解决方案。通过在各个设备上的Debug Agent代理统一对接不同语言的调试器,调试代理负责将DevEco Studio中的调试插件中的调试命令转换为对不同调试器的请求,包括单步调试Step Into/Step Out/Step Over、跨模块步入,恢复程序等调试功能,Debugger插件负责将所有的调试信息以符合开发者需求的方式展示出来。
文章图片
图1 DevEco Studio的分布式调试能力
下面,我们将对DevEco Studio新增的分布式调试能力进行介绍。
- 分布式跨设备跨语言调试
- 分布式异常故障自动捕获
文章图片
图2 异常故障自动捕获
- 跨设备状态流转、分布式堆栈可视化
(1)跨设备状态流转
Device Transfer视图以生动简洁的形式呈现了设备间的组网关系和连接状态,将设备以不同组网的分类形式进行分组,组内之间的设备可以显示它们的具体信息和原子化服务的动态流转关系。如图所示,每个球状图形表示一台设备,蓝色表示与IDE相连接,黄色表示该组网内未与IDE连接的设备,它们之间的箭头代表设备间原子化服务能力的调用,有助于开发者快速理解设备间的流转及互动关系。
文章图片
图3 Device Transfer视图
(2)分布式堆栈可视化
分布式堆栈可视化功能打破陈规,将函数之间的调用关系以直观的可视化结构图形呈现出来,并保留了历史调用,克服了跨设备跨语言堆栈列表分割不连续的弊端,如图中,Call Stack view呈现了不同设备调试的模块,它们使用不同的颜色表示,点击图中的函数节点能自动定位到代码中的函数处。使开发者溯源代码更加轻松快捷。
文章图片
图4 Call Stack视图
- 时光调试:在JS上支持逆向调试
DevEco Studio将提供时光调试功能,帮助你回退到关键代码位置,调试一次即可找出代码问题。时光调试支持在函数体内自由前进或回退,支持回退到上一行(Step Back)、回退到上一个断点(Run Back To Breakpoint),回退到鼠标位置(Run Back To Active Line),回退到上一个函数的最后一行(Step Back Into),回退到方法的调用处(Step Back Out)。一切变量值、一切调试状态都恢复至你未执行后续代码的状态,帮助你调试一次即可找出代码问题。
文章图片
图5 JS调试基础上增加逆向调试
二、分布式调优能力
分布式协同场景中跨设备业务性能瓶颈如何定位? JS应用的性能分析与内存分析如何来做? 性能采集过程中的数据是否合理?这些性能调优的问题,同样也困扰着很多的开发者。
DevEco Studio中也将新增HarmonyOS分布式性能Profiler的整体方案,在每个设备上会自动部署一个Profiler的代理,这个代理将通过与JS执行引擎,Java执行引擎,C++性能采集器等模块进行交互,获取代码执行过程中的性能数据,经过时钟同步,生成面向开发者的多种运行性能和内存分析视图。下面我们将对DevEco Studio中新增的多设备协同的性能跟踪、基于JS的应用的运行性能和对内存分析,针对性能数据自动辅助分析方进行阐述。
文章图片
图6 分布式性能调优能力
- 多设备协同性能跟踪
● 丢帧统计
统计调试过程中丢帧情况,显示丢帧的序号以及丢帧率;
● 分布式时延
一次分布式业务运行过程中,同时完成跨设备的系统调用跟踪;提供跨设备调用栈的时延,不同设备上各系统调用使用不同颜色区分,各调用过程的耗时以及调用间的时延分别显示,并且高亮此次业务中高耗时的阶段,可以协助开发者快速定位耗时的流程。同时Timeline和调用栈视图可双向联动,提升调试效率。
文章图片
图7 系统跟踪能力
- JS应用运行性能分析
文章图片
图8 Call Chart和Flame Chat视图
- JS应用堆内存分析
文章图片
图9 堆内存分析
- 性能数据自动辅助分析
用户从下拉列表中选取已安装的应用包名,IDE工具会自动启动选取的应用并抓取应用启动过程中的CPU占用率,IO读写量,使用内存等资源信息和该进程的函数调用信息。抓取结束后点击记录图标会自动分析获取信息,如果资源占用过多或函数调用时长偏长,会在性能分析报告页具体展示详细信息,同时部分常见问题会有优化建议的提示,助力开发者快速发现性能短板,提升应用性能体验。
文章图片
图10 性能数据自动辅助分析
DevEco Studio还为开发者提供应用功耗问题分析以及功耗调优的能力,主要包括:
● 整机耗电分解
提供了整机的耗电情况,并对TOP耗电器件CPU、屏幕、GPU、Modem、WIFI、Audio、BT、GPS等器件进行了功耗分解,并记录了影响器件耗电的各器件的状态详情,同时支持系统维度的影响功耗状态的信息展示,方便开发者对整机的耗电情况有整体把握,并进行耗电分析。
● 应用分解
将单个应用的耗电情况按照器件维度分解,后续可支持应用线程维度的拆解,方便识别到应用功耗问题时,快速的锁定问题线程。同时对应用CPU负载率实时展示,开发者可方便看到应用的CPU的负载情况。
至此,本期内容就结束了,随着时代的发展,分布式应用的发展已成趋势,那些曾让开发者抓狂的分布式调优及调试问题,DevEco Studio中新增的功能定能帮你解决。
推荐阅读
- 一个人的旅行,三亚
- EffectiveObjective-C2.0|EffectiveObjective-C2.0 笔记 - 第二部分
- 第326天
- 赠己诗
- 考研英语阅读终极解决方案——阅读理解如何巧拿高分
- 如何寻找情感问答App的分析切入点
- D13|D13 张贇 Banner分析
- 托福听力高分备考方案
- 自媒体形势分析
- 姚老师互动问答会|姚老师互动问答会 # 问题001(如何更有智慧的和身边人分享金刚智慧())