在 VS Code 中调试 Go 程序需配置 launch.json 并使用 Delve 调试器:安装 Go SDK(≥1.16)、dlv 和官方 Go 扩展;通过 Debug: Open launch.json 自动生成配置;设置 program、mode、args 等字段;添加断点(含条件断点和日志断点);利用调试面板查看变量、切换 goroutine、控制执行流。

在 VS Code 中调试 Go 程序,核心是正确配置 .vscode/launch.json 并合理设置断点。Go 官方推荐使用 dlv(Delve)作为调试器,VS Code 通过 go 扩展集成它。只要环境就绪、配置得当,调试体验流畅自然。
确保基础环境已安装
调试前需确认以下三项已就位:
- Go SDK:版本建议 ≥ 1.16(较新版本对模块和调试支持更稳定)
-
Delve(dlv):运行
go install github.com/go-delve/delve/cmd/dlv@latest安装,完成后执行dlv version验证 -
VS Code Go 扩展:在扩展市场中搜索并安装官方
Go扩展(由 Go Team 维护,图标为蓝色 G)
自动生成 launch.json(推荐初学者)
无需手动编写,VS Code 可智能生成适配当前项目的调试配置:
- 打开一个
.go文件(如main.go) - 按
Ctrl+Shift+P(Windows/Linux)或Cmd+Shift+P(macOS),输入Debug: Open launch.json - 选择环境为
Go→ 选择Launch Package(适用于普通可执行程序)或Launch Test(用于测试函数) - VS Code 会自动创建
.vscode/launch.json,内容类似:
{
"version": "0.2.0",
"configurations": [
{
"name": "Launch Package",
"type": "go",
"request": "launch",
"mode": "test", // 或 "auto", "exec", "core"
"program": "${workspaceFolder}",
"env": {},
"args": []
}
]
}
常用 launch.json 配置项说明
根据实际场景,可调整以下关键字段:
立即学习“go语言免费学习笔记(深入)”;
-
program:指定要调试的入口路径。值为"${workspaceFolder}"表示当前工作区根目录(自动识别main包);也可写死为"./cmd/myapp/main.go" -
mode:"auto"(默认,自动判断)、"exec"(调试已编译的二进制)、"test"(调试go test)、"core"(分析 core dump) -
args:传递给程序的命令行参数,例如["-port=8080", "-debug"] -
env:设置环境变量,如{"GIN_MODE": "debug"} -
dlvLoadConfig:控制变量加载深度,避免大结构体卡顿,常见配置:
"dlvLoadConfig": {
"followPointers": true,
"maxVariableRecurse": 1,
"maxArrayValues": 64,
"maxStructFields": -1
}
设置与使用断点
断点操作简单直观:
- 在代码行号左侧灰色区域单击,出现红点即设下断点;再次单击可取消
- 支持条件断点:右键断点 →
Edit Breakpoint→ 输入表达式,如i == 5或len(data) > 100 - 支持日志断点(Logpoint):右键断点 →
Edit Breakpoint→ 选择Log Message,输入类似Processing item: {item.Name},执行时只打印不中断 - 启动调试:
F5或点击侧边栏「运行」→「开始调试」→ 选择配置名称
调试过程中的实用技巧
进入调试后,可充分利用 VS Code 的调试面板:










