VSCode如何配置launch.json进行代码调试
VSCode调试时,应通过运行调试侧边栏的齿轮图标自动生成launch.json,避免手动编写导致字段缺失。配置需注意program路径准确性,并统一使用正斜杠。断点不命中需检查sourcemap、调试信息或解释器路径。全栈调试可通过compounds组合多个配置实现,后端需提前启动并监听端口。
VSCode调试配置:别手写launch.json,用齿轮图标自动生成
调试配置这事儿,手动填坑可不少。尤其是launch.json,自己敲JSON很容易漏掉env、cwd、preLaunchTask这些关键字段,结果就是断点死活不触发、路径各种报错,或者模块根本找不到。

记住一个原则:launch.json不该手写,必须通过VSCode的齿轮图标自动生成。
用齿轮图标生成,别自己敲JSON
具体怎么做?打开「运行和调试」侧边栏(快捷键Ctrl+Shift+D),点击顶部那个齿轮图标。VSCode会根据你已经安装的扩展(比如Python、C/C++、Node.js)自动列出对应的调试模板。选中之后,生成的launch.json不仅自带完整注释,字段语义清晰,还能自动适配当前的工作环境。
如果点开齿轮没看到你想要的编程语言选项,通常就两个原因:要么是对应的调试扩展压根没装(比如Go语言调试需要官方的Go扩展,而不是那个Debugger for Go);要么是扩展被禁用了,或者当前工作区VSCode没识别出语言上下文(比如你都没打开一个.py文件就去点齿轮)。
program路径写错,调试直接失败
program这个字段,必须指向一个真实存在的可执行入口文件。它的路径解析,完全依赖于cwd(当前工作目录)的设置。一个最常见的错误就是写了相对路径,却没设置cwd,导致VSCode跑到工作区的根目录下去找文件,结果当然是“file not found”。
这里有几个实操建议,能帮你避开不少坑:
- 路径写法要统一:建议使用VSCode的预定义变量,比如
"program": "${workspaceFolder}/dist/index.js"。如果是调试单个Python文件,直接用"program": "${file}"最省事。 - C/C++项目要注意:
program必须填编译后生成的二进制文件路径,例如"${workspaceFolder}/build/hello",可千万别填成.cpp源文件。 - TypeScript项目有讲究:
program字段只能指向编译输出的.js文件,不能是.ts源文件,否则断点根本打不进去。 - Windows用户看过来:路径里的分隔符,请统一使用正斜杠
/,避免使用反斜杠\。
断点不命中?先查sourcemap、-g编译、解释器路径
调试时最让人头疼的,莫过于断点变成了空心圆,按F5后程序直接跑完,鼠标悬停上去变量显示undefined。别急着怪编辑器,这通常是调试链路在某个环节断开了。
可以按语言快速排查:
- TypeScript/Ja vaScript项目:首先确认配置里开启了
"sourceMaps": true,并且"outFiles"正确指向了输出目录,比如["${workspaceFolder}/dist/**/*.js"]。然后,去dist目录下检查index.js.map这个sourcemap文件是否存在,并且里面的sources字段是否准确指向了你工作区里的.ts源文件路径。 - C/C++项目:90%的问题出在编译时忘了加
-g调试信息。检查你的tasks.json编译任务,args参数里是否包含了"-g"。如果用的是CMake,确保设置了set(CMAKE_BUILD_TYPE Debug)。 - Python项目:先看看VSCode右下角选择的Python解释器路径,是不是你虚拟环境里的那个
python。遇到模块导入失败,优先考虑在launch.json里通过"env"字段添加PYTHONPATH,比如"env": {"PYTHONPATH": "${workspaceFolder}/src"},而不是去硬改代码里的sys.path。
前后端一起调试,靠compounds不靠单个configuration
launch.json里的单个configuration,一次只能启动一个调试进程。所以,所谓的“全栈调试”,本质上是通过组合多个配置来实现的:前端用一个chrome类型的配置("request": "launch")来自动打开浏览器并注入调试器;后端则用一个node类型的配置("request": "attach")去连接一个已经启动好的服务进程。
这里有三个关键动作:
- 后端配置:必须设置
"request": "attach",并且"port"要和你在命令行启动服务时指定的调试端口一致(例如,用node --inspect=9229 server.js启动,那么配置里就写"port": 9229)。 - 前端配置:推荐使用
"type": "chrome",并设置好"url": "http://localhost:3000"(假设你的前端服务跑在3000端口),同时正确配置"webRoot"字段指向前端源代码根目录。 - 组合配置:在
launch.json的根级别,添加一个"compounds"字段,把前端和后端两个配置的name放进去。这样,当你启动这个compound时,VSCode会先执行launch类型的配置(确保服务就绪),然后再执行attach去连接。
最后提个醒,这一点最容易被忽略:后端服务必须在VSCode尝试attach之前就已经启动完毕,并且在监听指定的调试端口。别指望compounds能自动帮你把后端进程拉起来——要实现这个,你得借助preLaunchTask或者外部的启动脚本。
Postman是一套面向API全生命周期的开发与测试平台,可在Mac上发送和调试多种协议请求,管理集合、环境及认证信息,并完成脚本测试、模拟服务、监控、文档发布和团队协作。它适合开发、测试及运维人员使用,提供个人免费方案。
Docker Desktop 是 Docker 官方为 Mac 提供的容器开发环境,集成 Docker Engine、命令行工具、Compose、Build、Kubernetes 与图形化管理界面。
Android Studio 是 Google 面向安卓应用开发提供的官方集成开发环境,基于 IntelliJ IDEA 构建。它整合智能代码编辑、Gradle 构建、界面预览、设备模拟、性能分析、调试测试及 APK 分析等工具。
PixPix 是面向品牌、卖家和内容团队的在线 AI 图片视频创作平台,提供图视频 Agent、无限画布、图片生成、视频生成、自然语言编辑及商品套图、产品精修和带货视频等电商工具。
Postman 是面向 API 全生命周期的开发与协作平台。Windows 桌面版可用于构建和发送 HTTP、GraphQL、gRPC、WebSocket、MQTT 等请求,并提供环境变量、集合、脚本测试、模拟服务、监控、文档及团队工作区等
Docker Desktop 为 Windows 开发者提供集成式容器环境,内置 Docker Engine、命令行工具、Compose、Build 与 Kubernetes 等组件,可在本机完成镜像构建、容器运行、日志查看和资源管理。













