HarmonyOS之变量可视化调试

举报
Serendipity·y 发表于 2022/02/17 00:07:57 2022/02/17
【摘要】 一、概述 在 HarmonyOS 应用调试过程中,查看变量的变化过程是否符合预期结果是一项常用的调试方法。为此 DevEco Studio 提供了调试变量的可视化功能,支持 Java、C/C++ 和 J...

一、概述

  • 在 HarmonyOS 应用调试过程中,查看变量的变化过程是否符合预期结果是一项常用的调试方法。为此 DevEco Studio 提供了调试变量的可视化功能,支持 Java、C/C++ 和 JS 语言的基本数据类型、数值类型的集合和表达式可视化调试,并以Plain(树形)、Line(折线图) 、Bar(柱状图)和Table(表格)的形式呈现。
  • 开发者可以根据这些图形化界面观察当前值、数据类型以及数值的连续变化,通过查看、比对、分析当前变量的变化过程和逻辑关系,判断出当前值(变量)是否符合预期结果,从而迅速有效的定位问题。
  • 变量可视化支持当前值可视化和连续变化值可视化两种方式。

二、当前值可视化

  • 当前值可视化:通过解析 Debugger 当前帧的信息,获取指定变量当前栈帧中的值,以Plain(树形)、Line(折线图)、Bar(柱状图)和Table(表格)方式进行可视化展示。当前值可视化每次只能观察一个变量,开发者可以根据需要切换变量进行观察。
  • Plain(树形)显示结果示意图:

在这里插入图片描述

  • Line(折线图)显示结果示意图:

在这里插入图片描述

  • Bar(柱状图)显示结果示意图:

在这里插入图片描述

  • Table(表格)显示结果示意图:

在这里插入图片描述

  • 支持的数据类型包括基本类型(包括基本数据类型和基本数据类型的包装类)、基本类型的集合和表达式(结果为基本数据类型和基本数据类型的包装类)。其中:
    • Java 支持的呈现形式如下表所示:
数据类型 支持的展示类型
数值类型:byte、short、int、long、float、double基本数值类型及其包装类型等 Plain(树形)、Line(折线图)、Bar(柱状图)和Table(表格)
字符类型:char及其包装类、String等 Plain(树形)和Table(表格)
布尔类型:boolean及其包装类 Plain(树形)和Table(表格)
包含数值类型的集合或一维数组:List、vector、set等 Plain(树形)、Line(折线图)、Bar(柱状图)和Table(表格)
一维对象、键值对map和数值/字符/布尔类型的集合或数组 Plain(树形)和Table(表格)
其它 Plain(树形)
    • C/C++ 支持的呈现形式如下表所示:
数据类型 支持的展示类型
数值类型:int、float、double(或者指定大小的类型如int32_t、int64_t)和signed、unsigned、short、long等的组合 Plain(树形)、Line(折线图)、Bar(柱状图)和Table(表格)
字符类型:char16_t、char32_t、wchar_t等 Plain(树形)和Table(表格)
布尔类型:bool Plain(树形)和Table(表格)
包含数值类型的集合List、vector、set等 Plain(树形)和Table(表格)
包含数值类型的一维数组 Plain(树形)、Line(折线图)、Bar(柱状图)和Table(表格)
一维对象、键值对map和数值/字符/布尔类型的集合或数组 Plain(树形)和Table(表格)
其它 Plain(树形)
    • C/C++ 可视化功能说明:
      • 如果观察的变量在当前断点之后,则会提示“Variable not initialized”。
      • 如果全局静态变量在代码块中未使用,则会提示“error: use of undeclared identifier ‘varName’ ”。
      • 如果在全局非静态变量和局部变量中存在同名变量名,则在添加 C/C++ 全局非静态变量时,需要以“::变量名”方式添加,才能正常观察其值。
    • JS 支持的呈现形式如下表所示:
数据类型 支持的展示类型
数值类型:number Plain(树形)、Line(折线图)、Bar(柱状图)和Table(表格)
字符类型:string Plain(树形)和Table(表格)
布尔类型:boolean Plain(树形)和Table(表格)
一维数值类型的数组:array Plain(树形)、Line(折线图)、Bar(柱状图)和Table(表格)
一维对象、null和undefined Plain(树形)和Table(表格)
其它 Plain(树形)
    • JS 可视化功能说明:
      • JS 语法定义变量不区分数据类型,因此,可视化功能会依据数据结果进行智能识别。例如,array 集合识别为数值集合,则支持 Plain、Line、Bar 和 Table;如果识别为字符集合,则只支持 Plain 和 Table。
      • 针对 LiteWearable 和 Smart Vision 设备,如果变量在调试变量栏的 local 中存在,则可视化结果与 local 中该变量的结果保持一致;如果在 local 中不存在该变量,则显示结果为 Object,如下图中的变量 object,在 local 中存在,则以 local 中的取值为准。

在这里插入图片描述

三、连续变化值可视化

  • 连续变化值可视化:通过坐标图的方式,可以同时显示多个变量的连续变化过程,以及变量之间的关系。
  • 连续变化值可视化,只支持基本数值类型的数据可视化。
  • 以 Java 变量可视化为例进行说明:

在这里插入图片描述

  • 分析:
    • 在连续变化值可视化中,会呈现所有变量的连续变化结果,其中横坐标为断点命中clock,纵坐标为变量值,从添加观察变量的 clock 开始记录变量值的连续变化。
    • 在图中,圆圈符号表示支持(只有数值类型支持)连续变化值可视化,三角符号表示不支持。
    • 在图中,如果有多个变量的连续变化图,为方便查看其中指定的变量的变化趋势,避免非观察变量带来的影响,可以点击图形上方的变量名,将其设置为灰色,这样就可以在坐标图中隐藏该变量,再次点击灰色的变量名,则在坐标图中呈现出该变量的连续变化值。
    • 横坐标记录范围最大为 100,超过 100 后,则从 1 开始清除前面的数据。

在这里插入图片描述

  • 在连续变化值可视化中,可以点击 clock 节点,会自动跳转到对应值的代码行(断点位置),并且会高亮显示代码行和 clock 时钟,如下图所示:

在这里插入图片描述

四、变量可视化操作

  • Java、C/C++ 和 JS 调试变量可视化的操作相同。
  • 在待调试的源代码中打上断点,并启动调试功能。
  • 打开变量可视化调试窗口,可通过在编辑器或者调试变量栏窗口中,选中变量,点击鼠标右键,选中“Add to Visual Watches”,自动将该变量添加到可视化窗口中。
  • 查看变量的当前值和连续变化值。

文章来源: blog.csdn.net,作者:Serendipity·y,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/Forever_wj/article/details/119082785

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。