HarmonyOS Developer DevEco Studio使用指南-应用/服务调试

丶龙八夷
发布于 2023-4-4 11:48
浏览
0收藏

使用模拟器进行调试

DevEco Studio提供了丰富的HarmonyOS应用/服务调试能力,使用远程模拟器支持Java、JS、ArkTS单语言调试和JS+Java跨语言调试能力;使用本地模拟器支持Java、JS和C++的调试;同时还支持分布式应用/服务的跨设备调试,帮助开发者更方便、高效的调试应用/服务。关于模拟器支持的API版本请参考​使用模拟器运行应用/服务​

说明

远程模拟器不支持C++单语言调试和Java+C++跨语言调试。

HarmonyOS应用/服务调试支持使用模拟器设备调试,可以支持运行已签名或未签名的应用/服务。使用模拟器调试应用/服务的流程如下图所示:

HarmonyOS Developer DevEco Studio使用指南-应用/服务调试-鸿蒙开发者社区

调试前的设置

设置调试代码类型

工程调试类型默认为Detect Automatically,关于各调试类型的说明如下表所示:

表1 调试类型配置项

调试类型

调试代码

Java Only

仅调试Java代码,API Version 4~7支持

Js Only

  • 调试ArkTS代码,API Version 7~9支持
  • 调试JS代码,API Version 4~9支持

Native Only

仅调试C/C++代码,API Version 4~9支持

Dual(Js + Native)

调试C/C++工程的ArkTS/JS和C/C++代码,支持API Version 8~9

Dual(Js + Java)

调试JS FA调用Java PA场景的JS和Java代码,API 4~7 Version 支持

Dual(Java + Native)

调试C/C++工程的Java和C/C++代码,API Version 4~7支持

Detect Automatically

新建工程默认调试器选项,根据调试的工程类型,自动启动对应的调试器。API 4~9 Version 支持













说明



JS+Java混合工程中,如果需要单独调试Java代码,需要手动修改Debug Type为“Java Only”。






修改调试类型的方法如下。

点击Run > Edit Configurations > Debugger,选择相应模块,设置Debug type即可。

HarmonyOS Developer DevEco Studio使用指南-应用/服务调试-鸿蒙开发者社区

设置HAP安装方式

在调试阶段,HAP在设备上的安装方式有2种,可以根据实际需要进行设置。

  • 安装方式一:先卸载应用/服务后,再重新安装,该方式会清除设备上的所有应用/服务缓存数据(默认安装方式)。
  • 安装方式二:采用覆盖安装方式,不卸载应用/服务,该方式会保留应用/服务的缓存数据。

设置方法如下:

单击Run > Edit Configurations,设置指定模块的HAP安装方式,勾选“Keep Application Data”,则表示采用覆盖安装方式,保留应用/服务缓存数据。

HarmonyOS Developer DevEco Studio使用指南-应用/服务调试-鸿蒙开发者社区

如果一个工程中同一个设备存在多个模块(如Phone设备,存在entry和feature模块),且存在模块间的调用时,在调试阶段需要同时安装多个模块的HAP到设备中。此时,需要在Deploy Multi Hap中选择多个模块,启动调试时,DevEco Studio会将所有的模块都安装到设备上。API 9工程不支持。

设置方法如下:

单击Run > Edit Configurations,在Deploy Multi Hap中,勾选Deploy Multi Hap Packages,选择多个模块。

HarmonyOS Developer DevEco Studio使用指南-应用/服务调试-鸿蒙开发者社区

启动调试

  1. 在工具栏中,选择调试的设备,并单击Debug


HarmonyOS Developer DevEco Studio使用指南-应用/服务调试-鸿蒙开发者社区

或Attach Debugger to Process

HarmonyOS Developer DevEco Studio使用指南-应用/服务调试-鸿蒙开发者社区

启动调试。

HarmonyOS Developer DevEco Studio使用指南-应用/服务调试-鸿蒙开发者社区

说明

Debug和Attach Debugger的区别在于,Attach Debugger to Process可以先运行应用/服务,然后再启动调试,或者直接启动设备上已安装的应用/服务进行调试;而Debug是直接运行应用/服务后立即启动调试。

  1. 如果需要设置断点调试,则需要选定要设置断点的有效代码行,在行号(比如:24行)的区域后,单击鼠标左键设置断点(如图示的红点)。

HarmonyOS Developer DevEco Studio使用指南-应用/服务调试-鸿蒙开发者社区

设置断点后,调试能够在正确的断点处中断,并高亮显示该行。

  1. 启动调试后,开发者可以通过调试器进行代码调试。调试器的功能说明如下表所示:

表2 调试器按钮

按钮

名称

快捷键

功能

HarmonyOS Developer DevEco Studio使用指南-应用/服务调试-鸿蒙开发者社区

Resume Program

F9(macOS为Option+Command+R

当程序执行到断点时停止执行,单击此按钮程序继续执行。

HarmonyOS Developer DevEco Studio使用指南-应用/服务调试-鸿蒙开发者社区

Step Over

F8(macOS为F8

在单步调试时,直接前进到下一行(如果在函数中存在子函数时,不会进入子函数内单步执行,而是将整个子函数当作一步执行)。

HarmonyOS Developer DevEco Studio使用指南-应用/服务调试-鸿蒙开发者社区

Step Into

F7(macOS为F7

在单步调试时,遇到子函数后,进入子函数并继续单步执行。

HarmonyOS Developer DevEco Studio使用指南-应用/服务调试-鸿蒙开发者社区

Force Step Into

Alt+Shift+F7(macOS为Option+Shift+F7

在单步调试时,强制进入方法。

HarmonyOS Developer DevEco Studio使用指南-应用/服务调试-鸿蒙开发者社区

Step Out

Shift+F8(macOS为Shift+F8

在单步调试执行到子函数内时,单击Step Out会执行完子函数剩余部分,并跳出返回到上一层函数。

HarmonyOS Developer DevEco Studio使用指南-应用/服务调试-鸿蒙开发者社区

Stop

Ctrl+F2(macOS为Command+F2

停止调试任务。

HarmonyOS Developer DevEco Studio使用指南-应用/服务调试-鸿蒙开发者社区

Run To Cursor

Alt+F9(macOS为Option+F9

断点执行到鼠标停留处。

对于原子化服务,由于原子化服务在设备中没有桌面图标,可以通过如下方式在设备中运行/调试原子化服务。

  • 在服务中心展示的原子化服务:

     ○  通过DevEco Studio的运行/调试按钮,将原子化服务推送到真机设备上安装,安装完成后便可以启动原子化服务;同时在服务中心的最近使用中可以看到该原子化服务的卡片。

     ○  通过hdc命令行工具,将原子化服务推送到真机设备上安装,安装完成后便可以启动原子化服务;同时在服务中心的最近使用中可以看到该原子化服务的卡片。

  • 在服务中心不展示的原子化服务:

     ○  通过DevEco Studio的运行/调试按钮,将原子化服务推送到真机设备上安装,安装完成后便可以启动原子化服务。

     ○  通过hdc命令行工具,将原子化服务推送到真机设备上安装,安装完成后便可以启动原子化服务。

     ○  设备控制类的原子化服务,可通过碰一碰、扫一扫等方式运行。

变量可视化调试

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

当前值可视化

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

Plain(树形)显示结果示意图

HarmonyOS Developer DevEco Studio使用指南-应用/服务调试-鸿蒙开发者社区

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

HarmonyOS Developer DevEco Studio使用指南-应用/服务调试-鸿蒙开发者社区

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

HarmonyOS Developer DevEco Studio使用指南-应用/服务调试-鸿蒙开发者社区

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

HarmonyOS Developer DevEco Studio使用指南-应用/服务调试-鸿蒙开发者社区

支持的数据类型包括基本类型(包括基本数据类型和基本数据类型的包装类)、基本类型的集合和表达式(结果为基本数据类型和基本数据类型的包装类)。其中:

  • 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: <user expression 3>:1:1: use of undeclared... ”。

    ○  如果在全局非静态变量和局部变量中存在同名变量名,则在添加C/C++全局非静态变量时,需要以“::变量名”方式添加,才能正常观察其值。

  • JS\ArkTS支持的呈现形式如下表所示:

数据类型

支持的展示类型

数值类型:number

Plain(树形)、Line(折线图)、Bar(柱状图)和Table(表格)

字符类型:string

Plain(树形)和Table(表格)

布尔类型:boolean

Plain(树形)和Table(表格)

一维数值类型的数组:array

Plain(树形)、Line(折线图)、Bar(柱状图)和Table(表格)

一维对象、null和undefined

Plain(树形)和Table(表格)

其它

Plain(树形)

JS\ArkTS可视化功能说明:

    ○  JS\ArkTS语法定义变量不区分数据类型,因此,可视化功能会依据数据结果进行智能识别。例如,array集合识别为数值集合,则支持Plain、Line、Bar和Table;如果识别为字符集合,则只支持Plain和Table。

    ○  针对LiteWearable和Smart Vision设备,如果变量在调试变量栏的local中存在,则可视化结果与local中该变量的结果保持一致;如果在local中不存在该变量,则显示结果为Object,如下图中的变量object,在local中存在,则以local中的取值为准。

HarmonyOS Developer DevEco Studio使用指南-应用/服务调试-鸿蒙开发者社区

连续变化值可视化

连续变化值可视化:通过折线图的方式,可以同时显示多个变量的连续变化过程,以及变量之间的关系。连续变化值可视化,只支持基本数值类型的数据可视化。

下面以Java语言的变量可视化为例进行说明。

HarmonyOS Developer DevEco Studio使用指南-应用/服务调试-鸿蒙开发者社区

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

说明

横坐标记录范围最大为100,超过100后,则从1开始清除前面的数据。

HarmonyOS Developer DevEco Studio使用指南-应用/服务调试-鸿蒙开发者社区

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

HarmonyOS Developer DevEco Studio使用指南-应用/服务调试-鸿蒙开发者社区

变量可视化操作指导

Java、C/C++、JS、ArkTS调试变量可视化的操作相同。

  1. 在待调试的源代码中打上断点,并启动调试功能。
  2. 打开变量可视化调试窗口,可通过在编辑器或者调试变量栏窗口中,选中变量,点击鼠标右键,选中“Add to Visual Watches”,自动将该变量添加到可视化窗口中。

说明

变量可视化功能最多同时支持10个变量。如果超过10个变量,请在“Observed Variable”下拉列表中,删除正在显示的变量后添加。

  1. 查看变量的当前值和连续变化值。




文章转载自:​​https://developer.harmonyos.com/cn/docs/documentation/doc-guides-V3/data_visualization-0000001064877812-V3​

分类
标签
已于2023-4-4 11:48:42修改
收藏
回复
举报
回复
    相关推荐