一、Debug界面的三个Tab
| Tab页 | 用途 |
|---|---|
| entry | 通常用于展示推包安装过程 |
| entry(PandaDebugger) | 调试器,用于调试 Debugger 功能 |
| entry(Native) | 调试器,仅在涉及 Native 调试时才会拉起 |
第二个和第三个 Tab 页才是真正的调试器,其中 entry(Native) 只在 Native 调试场景出现。
二、调试器的两个窗格
调试器包含两个窗格:Debugger 和 Console。
Debugger 窗格
| 区域 | 说明 |
|---|---|
| 左侧区域 Frames | 当应用调试到某个断点时,Frames 区会显示当前代码所引用的代码位置 |
| 右侧区域 Variables | 用于展示当前变量 |
Console 窗格
Console 窗格用于展示已加载的 ets、js 或 so。
三、调试器按钮
| 按钮名称 | 快捷键 | 功能 |
|---|---|---|
| Resume Program | F9 (macOS 为 Option+Command+R) | 当程序执行到断点时停止执行,单击此按钮程序继续执行 |
| Step Over | F8 (macOS 为 F8) | 单步调试时,直接前进到下一行(如果存在子函数,不会进入子函数内单步执行,而是将整个子函数当作一步执行) |
| Step Into | F7 (macOS 为 F7) | 单步调试时,遇到子函数后,进入子函数并继续单步执行 |
| Smart Step Into | Shift+F7 (macOS 为 Shift+F7) | 代码行存在多个函数嵌套或调用 时,可智能步入选择想进入的方法 |
| Step Out | Shift+F8 (macOS 为 Shift+F8) | 单步调试执行到子函数内时,单击会执行完子函数剩余部分,并跳出返回到上一层函数 |
| Stop | Ctrl+F2 (macOS 为 Command+F2) | 停止调试任务 |
| Run To Cursor | Alt+F9 (macOS 为 Option+F9) | 断点执行到鼠标停留处 |
| JSVM Debug Port | 无 | 转发 JSVM 调试的端口,转发后可在浏览器 DevTools 上进行 JSVM-API 调试。 说明:仅 Native 调试器中支持该按钮 |
说明:
1. Resume Program
点击 Resume Program 图标:
-
如果存在断点:命中下一个断点,并展示对应的 Frames 和 Variables 信息
-
如果不存在断点 :设备上的应用正常运行,Frames 和 Variables 信息会消失
2. Pause Program
点击 Pause Program 图标:
- 当有对应源代码时,应用会暂停
3. Step Over
点击 Step Over:当前代码执行到下一行代码。
4. Step Into
点击 Step Into:当前代码进入到方法内部。
5. Step Out
点击 Step Out:代码会从方法内部回到调用处。
6. Run to Cursor
点击 Run to Cursor:代码停留在鼠标停留处。
7. JSVM Debug Port
点击 JSVM Debug Port:
-
弹出输入转发端口的面板
-
输入端口并点击 OK 后会开始转发
-
转发成功后会有弹窗提示
-
根据提示对 JS 代码进行调试
版本要求 :该功能从 DevEco Studio 5.1.0 Release 版本开始支持。
其他
| 用途 | 按钮 | 快捷键 |
|---|---|---|
| 继续执行 | Resume Program | F9 |
| 暂停 | Pause Program | --- |
| 单步(不进子函数) | Step Over | F8 |
| 单步(进子函数) | Step Into | F7 |
| 智能选择进入 | Smart Step Into | Shift+F7 |
| 跳出子函数 | Step Out | Shift+F8 |
| 停止调试 | Stop | Ctrl+F2 |
| 运行到光标处 | Run To Cursor | Alt+F9 |
| JSVM 端口转发 | JSVM Debug Port | --- |
-
Smart Step Into 解决"嵌套调用选哪个"的问题 :比如一行里有
a(b(c())),想进b还是c,用这个按钮可以选,比 Step Into 更灵活。 -
Resume Program 有断点就跳下一个,没断点就放开执行 :注意没有断点时 Frames 和 Variables 会消失,别以为调试断了。
-
Resume Program 有断点就跳下一个,没断点就放开执行 :注意没有断点时 Frames 和 Variables 会消失,别以为调试断了。
-
Run To Cursor 很实用 :把光标放在目标行,点这个按钮,直接跑到光标处,比一步步 Step Over 快得多,适合跳过大量无关代码。
-
Stop 是停止整个调试任务 :和 Pause 不同,Stop 会结束调试会话,Pause 只是暂停应用执行。
如果调试时发现 Frames 是空的,通常是没命中断点 或调试已停止,先检查断点是否生效、调试会话是否还在运行。
