商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 编程开发 > VSCode如何配置launch.json进行代码调试

VSCode如何配置launch.json进行代码调试

  发布于2026-05-23 阅读(0)

扫一扫,手机访问

VSCode调试配置:别手写launch.json,用齿轮图标自动生成

调试配置这事儿,手动填坑可不少。尤其是launch.json,自己敲JSON很容易漏掉envcwdpreLaunchTask这些关键字段,结果就是断点死活不触发、路径各种报错,或者模块根本找不到。

VSCode如何配置launch.json进行代码调试

记住一个原则: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或者外部的启动脚本。

本文转载于:https://www.php.cn/faq/2414158.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注