# VS Code 断点调试

eduwin 支持在 VS Code 中直接按 `F5` 进行断点调试。本教程将介绍如何配置和使用。

---

## 1. 前提条件

- **VS Code** + **C/C++ 扩展**（发布者 Microsoft，扩展面板搜索 `C/C++`）
- **Visual Studio Build Tools** 已安装调试器组件（安装教程见[下载页面](/download)）

## 2. 配置说明

`.vscode\` 目录位于项目根目录下，其中已提供 `launch.json` 和 `tasks.json`（`pub.bat` 打包时已包含），解压即可用。结构如下：

```
your_project/
├── .vscode/
│   ├── launch.json      ← 调试器配置
│   └── tasks.json       ← 编译任务配置
├── samples/
│   └── menu_demo/
│       ├── menu_demo.c
│       └── build_debug.bat   ← 调试专用编译脚本
├── eduwin/
│   ├── include/eduwin.h
│   └── lib/eduwin.lib
```

## 3. 使用步骤

**第一步**：在 VS Code 中打开项目根目录。

**第二步**：在左侧文件浏览器中**点选你要调试的 `.c` 文件**（如 `samples\menu_demo\menu_demo.c`）。

> 这一步很重要——调试器会根据当前选中的文件来确定编译哪个程序。

**第三步**：按 `F5`（或点左侧 Run and Debug → 绿色播放按钮），VS Code 会自动调用 `build_debug.bat` 编译，然后启动调试。

## 4. build_debug.bat 怎么用

目前只有 `samples\menu_demo\` 下提供了 `build_debug.bat`。如果你想给其他示例加调试支持，复制 `samples\menu_demo\build_debug.bat` 到对应示例目录，只改两行：

```bat
set SOURCE=你的源文件.c
set PROGRAM=你的程序_debug.exe
```

- `SOURCE` 改为你要调试的源文件名
- `PROGRAM` 随意，加 `_debug` 后缀即可

其他内容不用动（`/Zi /Od /DEBUG` 都是调试必需的编译选项）。

## 5. 调试技巧

### 设置断点

在 VS Code 中，点击代码行号左侧的空白处即可设置断点（红点）。建议在以下位置设断点：

- 回调函数入口（如 `on_click`）
- 事件处理逻辑的关键分支
- 需要观察变量的位置

### 调试面板

按 `F5` 启动调试后，可以使用：

| 操作     | 快捷键          | 说明                   |
| -------- | --------------- | ---------------------- |
| 继续     | `F5`            | 运行到下一个断点       |
| 单步跳过 | `F10`           | 执行当前行，不进入函数 |
| 单步进入 | `F11`           | 进入函数内部           |
| 单步跳出 | `Shift+F11`     | 跳出当前函数           |
| 重启     | `Ctrl+Shift+F5` | 重新启动调试           |
| 停止     | `Shift+F5`      | 停止调试               |

### 查看变量

调试时，将鼠标悬停在变量名上即可查看当前值。也可以在左侧「变量」面板中查看所有局部变量、监视表达式和调用堆栈。
