调试代码时,断点是最基础也最常用的手段。DevEco Studio ArkTS 代码调试支持五类断点(行断点、日志断点、临时断点、函数断点、异常断点)。
一、断点类型
DevEco Studio ArkTS 代码调试支持多种类型的断点,这些断点可以触发不同的操作:
| 断点类型 | 用途 |
|---|---|
| 行断点 | 在指定代码行暂停应用执行 |
| 日志断点 | 运行到断点时在 Console 打印日志,不中断 |
| 临时断点 | 只生效一次,生效后自动删除 |
| 函数断点 | 使用函数名设置断点,运行到对应函数时中断 |
| 异常断点 | 在应用发生异常的地方暂停 |
二、行断点
行断点是最常见的类型,用于在指定的代码行暂停应用的执行。在暂停时,可以:
检查变量
对表达式求值
逐行执行,以确定运行时错误的原因
添加行断点
两种方式:
| 方式 | 操作 |
|---|---|
| 鼠标点击 | 点击该代码行的左侧边线 |
| 快捷键 | 将光标置于该行上,按Ctrl + F8(macOS 为Command + F8) |
设置断点后,相应的代码行旁边会出现一个红点。
条件断点
在设置的断点红点处,单击鼠标右键,在Condition中可以设置条件断点,此类断点仅在满足特定条件时暂停应用。
启动调试
正常调试:点击 Debug 图标开始调试
应用已在运行:点击Attach Debugger to Process图标
当应用运行到代码处,会在代码处停住,并高亮显示。
三、日志断点
在断点配置中,勾选以下类型的 Log,可以使进程运行到断点时在Console 窗口打印相应日志(不中断执行)。
| 勾选项 | 效果 |
|---|---|
| "Breakpoint hit" message | 程序运行到断点时,打印"Breakpoint reached" |
| Stack trace | 程序运行到断点时,打印当前线程的堆栈 |
| Evaluate and log | 添加表达式,程序运行到断点时,打印表达式的值 |
说明
未勾选 Enable 的断点不会打印日志
未勾选 Suspend execution 的断点会打印日志,不中断
不满足所设置的 Condition 的断点不会打印日志
四、临时断点
在断点配置中,勾选Remove once hit,该断点只生效一次,生效后该断点会被删除。
适用场景:只想在某个位置停一次看看,不想手动删断点时。
五、函数断点
从 DevEco Studio 6.0.0 Beta2 版本开始,支持在 ArkTS 代码中设置函数断点。
函数断点也叫方法断点或符号断点,使用函数名设置断点,当程序运行到对应函数时,中断进程。
添加函数断点
在 BreakPoints 中,点击+ > ArkTS Symbolic Breakpoints,在弹出窗口中填写函数名,添加函数断点。
说明
DevEco Studio 6.0.1 Release 及以下版本,调试过程中如果命中 C++ 断点,则无法添加和移除 ArkTS 函数断点。
6.0.2 Beta1 及以上版本,支持添加和移除。
六、异常断点
异常断点会在应用执行时发生异常的地方暂停应用。
开启方式
在 BreakPoints 中,勾选ArkTS/JS Exception Breakpoints,开启异常断点。
当调试应用程序中出现异常时:
会在异常处高亮
代码左侧有标志
展示当前Frames 和 Variables,以及错误信息
七、断点管理
打开断点管理
两种方式:
| 方式 | 操作 |
|---|---|
| 右键菜单 | 在设置的断点红点处单击鼠标右键,然后单击More |
| 快捷键 | Ctrl + Shift + F8(macOS 为Shift + Command + F8) |
也可以在Debug 窗口中点击View Breakpoints图标。