调试基础 #
调试功能概览 #
VSCode 内置了强大的调试功能,支持多种语言和运行时环境。
text
┌─────────────────────────────────────────────────────────────┐
│ 调试界面布局 │
├─────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ 代码编辑区 │ │
│ │ │ │
│ │ → let result = calculate(a, b); // 断点 │ │
│ │ │ │
│ └─────────────────────────────────────────────────────┘ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ 变量 │ 监视 │ 调用堆栈 │ 断点 │ │
│ ├─────────────────────────────────────────────────────┤ │
│ │ result: 42 │ │
│ │ a: 10 │ │
│ │ b: 32 │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘
启动调试 #
基本操作 #
| 功能 | Mac | Windows/Linux | 说明 |
|---|---|---|---|
| 开始调试 | F5 | F5 | 启动调试会话 |
| 开始调试(无调试) | ⌃F5 | Ctrl+F5 | 运行不调试 |
| 停止调试 | ⇧F5 | Shift+F5 | 停止调试会话 |
| 重启调试 | ⇧⌘F5 | Shift+Ctrl+F5 | 重启调试会话 |
调试配置 #
创建 .vscode/launch.json 文件:
json
{
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Launch Program",
"program": "${workspaceFolder}/index.js"
}
]
}
断点管理 #
设置断点 #
| 功能 | Mac | Windows/Linux | 说明 |
|---|---|---|---|
| 切换断点 | F9 | F9 | 添加/移除断点 |
| 条件断点 | - | - | 右键菜单设置 |
| 日志点 | - | - | 右键菜单设置 |
断点类型 #
text
1. 普通断点:程序在此暂停
2. 条件断点:满足条件时暂停
3. 日志点:输出消息但不暂停
4. 命中计数断点:执行指定次数后暂停
设置条件断点 #
text
1. 右键点击行号
2. 选择 "添加条件断点"
3. 输入条件表达式
4. 当条件为 true 时暂停
示例:
• i > 10
• user.name === 'Alice'
• count % 2 === 0
调试控制 #
单步执行 #
| 功能 | Mac | Windows/Linux | 说明 |
|---|---|---|---|
| 单步跳过 | F10 | F10 | 执行当前行,不进入函数 |
| 单步进入 | F11 | F11 | 进入函数内部 |
| 单步跳出 | ⇧F11 | Shift+F11 | 跳出当前函数 |
| 继续 | F5 | F5 | 继续执行到下一个断点 |
单步执行示例 #
javascript
function calculate(a, b) {
let result = a + b; // ← 断点在这里
return result;
}
let sum = calculate(10, 20); // ← F10 跳过,F11 进入
console.log(sum);
变量查看 #
查看变量 #
| 功能 | Mac | Windows/Linux | 说明 |
|---|---|---|---|
| 查看变量值 | - | - | 鼠标悬停查看 |
| 添加到监视 | - | - | 右键添加到监视 |
变量面板 #
text
变量面板显示:
• 局部变量
• 全局变量
• 闭包变量
展开对象可以查看属性值
监视表达式 #
添加监视 #
| 功能 | Mac | Windows/Linux | 说明 |
|---|---|---|---|
| 添加监视 | - | - | 在监视面板添加表达式 |
监视示例 #
text
添加监视表达式:
• user.name
• items.length
• calculateTotal()
• a + b
实时显示表达式的值
调用堆栈 #
查看调用堆栈 #
| 功能 | Mac | Windows/Linux | 说明 |
|---|---|---|---|
| 查看调用堆栈 | - | - | 在调用堆栈面板查看 |
调用堆栈示例 #
text
调用堆栈显示函数调用顺序:
calculate (index.js:10)
↳ processOrder (index.js:25)
↳ main (index.js:50)
↳ <anonymous> (index.js:60)
点击任意帧跳转到对应代码位置
调试控制台 #
使用调试控制台 #
| 功能 | Mac | Windows/Linux | 说明 |
|---|---|---|---|
| 打开调试控制台 | - | - | 切换到调试控制台标签 |
调试控制台功能 #
text
调试控制台可以:
• 执行表达式
• 查看变量值
• 调用函数
示例:
> user.name
'Alice'
> calculateTotal()
42
> items.filter(i => i.active)
调试实战案例 #
案例1:调试循环 #
javascript
for (let i = 0; i < 100; i++) {
processItem(items[i]); // ← 设置条件断点:i > 50
}
// 当 i > 50 时暂停
// 检查 items[51] 的值
案例2:调试异步代码 #
javascript
async function fetchData() {
const response = await fetch(url); // ← 断点
const data = await response.json(); // ← 断点
return data;
}
// 使用 F11 进入 async 函数
// 使用 F10 跳过 await
案例3:调试事件处理 #
javascript
button.addEventListener('click', (event) => {
handleClick(event); // ← 断点
});
// 点击按钮触发事件
// 在断点处暂停
// 检查 event 对象
调试工作流 #
text
┌─────────────────────────────────────────────────────────────┐
│ 调试流程 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 发现问题 │
│ │ │
│ ├─────▶ 设置断点 │
│ │ │ │
│ │ └─▶ F9 或点击行号 │
│ │ │
│ ├─────▶ 启动调试 │
│ │ │ │
│ │ └─▶ F5 │
│ │ │
│ ├─────▶ 单步执行 │
│ │ │ │
│ │ ├─▶ F10 单步跳过 │
│ │ ├─▶ F11 单步进入 │
│ │ └─▶ ⇧F11 单步跳出 │
│ │ │
│ ├─────▶ 查看变量 │
│ │ │ │
│ │ ├─▶ 鼠标悬停 │
│ │ └─▶ 变量面板 │
│ │ │
│ └─────▶ 继续执行 │
│ │ │
│ └─▶ F5 │
│ │
└─────────────────────────────────────────────────────────────┘
快捷键速查表 #
调试控制 #
| 功能 | Mac | Windows/Linux |
|---|---|---|
| 开始调试 | F5 | F5 |
| 停止调试 | ⇧F5 | Shift+F5 |
| 重启调试 | ⇧⌘F5 | Shift+Ctrl+F5 |
| 运行不调试 | ⌃F5 | Ctrl+F5 |
单步执行 #
| 功能 | Mac | Windows/Linux |
|---|---|---|
| 单步跳过 | F10 | F10 |
| 单步进入 | F11 | F11 |
| 单步跳出 | ⇧F11 | Shift+F11 |
| 继续 | F5 | F5 |
断点管理 #
| 功能 | Mac | Windows/Linux |
|---|---|---|
| 切换断点 | F9 | F9 |
| 启用/禁用断点 | - | - |
常见问题 #
Q: 调试时断点不生效? #
A: 确保 launch.json 配置正确,并且代码已编译(如 TypeScript)。
Q: 如何调试 Node.js 项目? #
A: 创建 launch.json,配置 "type": "node",然后按 F5 开始调试。
Q: 如何调试前端代码? #
A: 使用 “Debugger for Chrome” 扩展,或在浏览器开发者工具中调试。
练习建议 #
练习1:基本调试 #
text
1. 创建一个简单的 JavaScript 文件
2. 设置断点
3. 使用 F5 开始调试
4. 使用 F10 单步执行
练习2:条件断点 #
text
1. 创建一个循环
2. 设置条件断点
3. 观察特定条件下的变量值
练习3:调试函数 #
text
1. 创建一个包含多个函数的程序
2. 使用 F11 进入函数
3. 使用 ⇧F11 跳出函数
4. 查看调用堆栈
下一步 #
现在你已经掌握了调试技巧,接下来学习:
最后更新:2026-04-11