在 vs code 中启动调试需配置 launch.json 并确保程序路径正确、sourcemaps 开启(js/ts)、避免绝对路径错误;断点失效多因 sourcemap 未加载或入口未执行;调试前应手动验证命令可运行,f5 仅重启会话而非自动重编译。

怎么在 VS Code 里启动调试
VS Code 调试不是点一下就跑起来的,它依赖两个关键东西:一个可执行的程序(比如 node、python、go),和一份配置好的 launch.json。没配好这个文件,点 ▶️ 按钮只会弹出“找不到 launch.json”提示。
实操建议:
威博仿淘宝多用商城程序于4月底发布公测以来,得到了广大用户的关注和支持,陆续有很多意见和建议反馈到威博网络技术部。广泛的关注与支持,也是威博仿淘宝多用商城程序不断进步的一个重要原因。威博网络有这么多忠实的支持者才会有今天的成绩。经过一个多月的在线测试,威博仿淘宝多用商城程序有望于6月底正式对外发布销售!这套购物网站源代码/购物网站系统免费下载--威博网络是在多用户网上商城系统的基础上,全面整合仿淘
- 打开项目根目录,按
Ctrl+Shift+P(Windows/Linux)或Cmd+Shift+P(macOS),输入Debug: Open launch.json,选对应环境(如Node.js或Python)自动生成模板 - 确认
configurations里的program(或module、file)路径是相对当前工作区的,且文件真实存在——常见错误是写成绝对路径或拼错文件名,比如把index.js写成inde.js - 如果用的是 TypeScript,
program必须指向编译后的.js文件,不能直接写src/index.ts(除非你配了preLaunchTask自动构建)
断点不生效?检查这三件事
断点变空心圆、点击无反应、F5 运行后直接跑完没停——大概率不是 VS Code 坏了,而是运行时没加载 sourcemap 或没进调试入口。
常见错误现象:
- TS/JS 项目里断点打在
.ts文件上,但launch.json的program指向的是dist/index.js,且没配sourceMaps: true - Python 脚本用了
if __name__ == "__main__":,但launch.json的module设成了my_package,结果根本没执行到 main 块 - Node.js 启动命令里加了
--inspect,但 VS Code 的attach配置没对上端口(默认9229),或进程已退出
实操建议:
- JS/TS 项目务必在
launch.json中加上"sourceMaps": true和"outFiles": ["${workspaceFolder}/dist/**/*.js"] - Python 项目优先用
file方式而非module,避免路径解析歧义;如果必须用module,确认包已安装为 editable 模式(pip install -e .) - 启动调试前,在终端手动跑一次命令,看是否真能执行到你想断的位置(比如加个
console.log('here'))
调试控制台 vs 终端输出混了怎么办
你在调试控制台(Debug Console)里 console.log 出来的东西,和终端(Terminal)里跑脚本的输出,是两套流。尤其 Node.js 项目里,如果你用 child_process.spawn 或 exec 启了子进程,它的 stdout 默认不会进 Debug Console。
使用场景:
- 想在调试中实时看 HTTP 请求日志 → 改用
debug包并设置DEBUG=app:*环境变量,在launch.json的env字段里加进去 - Python 里用了
logging,但没输出 → 检查level是否设得太高(比如WARNING),调试时临时改成DEBUG - 看到一堆
[Extension Host]日志刷屏 → 这是 VS Code 自身扩展日志,关掉「调试」侧边栏里的「Show Log Messages」开关即可
为什么改了代码,F5 重启后还是旧逻辑
这不是缓存问题,而是 VS Code 默认不会自动重编译或热更新——它只是把当前配置下的程序拉起来跑一遍。你改了源码,但生成物(dist/、__pycache__/)没更新,自然还是跑的老版本。
实操建议:
- JS/TS 项目:在
launch.json加"preLaunchTask": "tsc: build - tsconfig.json",并确保tasks.json里定义了该任务 - Python 项目一般不用编译,但如果用了 Cython 或打包工具(如 PyInstaller),就得手动清理输出再调试
- 任何语言都适用的兜底办法:在
launch.json的env里加"NODE_OPTIONS": "--enable-source-maps"(Node)或"PYTHONPATH"(Python),避免路径错乱导致加载了旧模块
最常被忽略的一点:很多人以为 F5 是“重新运行”,其实它只是“重启当前调试会话”。如果进程卡死没退出干净,新会话可能复用旧状态。遇到奇怪行为,先关掉所有调试会话,再点 ▶️。









