在DevEco Studio的工具栏中包含了运行与调试工具,如图2-36所示。
通过最左侧的 entry下拉列表框可以选择程序入口HAP。在默认情况下,这个程序入口就是entry。其右侧按钮的功能如下:
· Run ‘entry’(Shift+F10):自动编译并运行当前应用程序。
· Debug ‘entry’(Shift+F9):调试当前的应用程序。
· Run ‘entry’with Coverage:对当前应用程序进行覆盖率测试。
· Profile ‘entry’:对当前应用程序进行性能剖析。
· Attach Debugger to Process:对已经运行的应用程序进行调试。
· Stop ‘entry’(Ctrl+F2):结束当前应用程序。
单击 按钮,首先弹出如图2-37所示的选择目标设备(Select Deployment Target)对话框。其中,Connected Devices中显示了包括远程虚拟机在内的已经连接的设备。HUAWEIGLL-AL00表示已经启动的远程虚拟设备。选中该虚拟设备后,单击OK按钮即可开始编译运行。
图2-36 工具栏中的运行与调试工具
图2-37 选择目标设备对话框
注意: 在如图2-37所示的对话框中,Available Huawei Lite Devices表示轻量级穿戴设备,并包含一个名为Huawei Lite Wearable Simulator的虚拟机。该虚拟机并不是远程设备,而是一个本地虚拟设备,用于调试轻量级穿戴设备应用程序。
此时,DevEco Studio会通过Gradle自动完成应用程序的编译、打包、上传和运行。最终,在虚拟机中出现如图2-38所示界面即表示运行完成。
注意: 如果开发者希望仅编译而不运行应用程序,可以通过单击菜单栏的Build→Build App/Hap→Build Debug Hap菜单编译出用于调试的HAP包。选择Build Release Hap(s)菜单可编译出用于分发的HAP包。
通过断点调试工具可以分析程序在运行时的某个时刻内存和变量的状态。在MainAbility.java代码中,在第11行代码左侧、行号右侧的灰色区域内单击,就会在该行代码上生成一个断点,即出现 图标。
然后,单击工具栏的 按钮运行并调试应用程序,或者单击 按钮连接并调试正在运行的应用程序。当程序执行到上述断点时,断点图标会变为 ,如图2-39所示。
图2-38 运行默认的应用程序
图2-39 添加程序断点
此时,即可在Debug工具窗体中查看此时的变量状态等信息,如图2-40所示。
图2-40 断点调试
在Debug工具窗体的左侧,包括用于控制应用程序执行状态和断点功能的按钮,其功能如下:
· Resume Program(F9):继续运行程序。
· Pause Program:暂停程序。
· Stop ‘entry’(Ctrl+F2):结束当前程序。
· View Breakpoints(Ctrl+Shift+F8):查看所有断点位置。
· Mute Breakpoints:点选后可以在运行时暂时跳过所有的断点。
· Get Thread Dump:抓取线程堆栈。
· Settings:调试设置选项。
· Pin Tab:固定标签。
在Debug工具窗体的上方,通过Debugger标签和 Console标签,可以切换调试工作台和终端界面。其余的按钮主要用于代码的单步或多步调试,各按钮的功能如下:
· Show Execution Point(Alt+F10):显示当前的断点位置。
· Step Over(F8):跳过当前代码,进入下一行代码(逐过程执行)。
· Step Into(F7):进入当前方法内部进行调试(逐语句执行)。
· Force Step Into(Alt+Shift+F7):强制进入当前方法内部进行调试。
· Step Out(Shift+F8):跳出当前方法。
· Drop Frame:回退到先前的堆栈框架。
· Run to Cursor(Alt+F9):执行到光标所在代码处。
· Evaluate Expression(Alt+F8):通过表达式计算当前状态下的变量。
· Trace Current Stream Chain:调试当前的Stream。
注意: 如果被调试的代码处于Entry以外的HAP,则需要在config.json中将代码中的Ability的visible属性设置为true,否则程序无法正常进入断点,但是,visible属性为true的Ability可以被其他的应用调用,因此在非必要的情况下,记得在调试完成后将visible属性设置为false。