F5调试前必须配置.launch.json文件,首次按F5会引导选择环境并自动生成;断点需设在可执行语句上,F10跳过函数、F11进入函数;调试控制台(Ctrl+Shift+Y)支持实时表达式求值。

F5 启动调试前必须有 launch.json
直接按 F5 不会“自动运行任意代码”,VSCode 需要明确知道用什么环境、怎么启动、加载哪些参数。这些信息存在项目根目录下的 .vscode/launch.json 中。
常见错误现象:无法启动调试 提示反复出现,不是快捷键坏了,而是根本没生成配置文件。
- 第一次按
F5,VSCode 会弹窗让你选环境(如Python、Node.js、C#),选完就自动生成基础launch.json - 如果项目里有多个入口文件(比如多个
main.py或index.js),VSCode 可能默认选错;得手动改launch.json里的program或module字段 - TypeScript 项目必须确保已编译出
.js文件,或在launch.json中加"preLaunchTask": "tsc: build - tsconfig.json",否则断点不命中
F9 设置断点是调试的起点
没有断点,F5 启动后程序会直接跑完,跟普通运行没区别。断点决定“在哪停”,是调试控制链的第一环。
- 把光标移到某行,按
F9,行号左侧出现红点即设好;再按一次取消 - 断点只能设在可执行语句上,比如
console.log()、if、return行,不能设在空行或注释行 - 函数定义行(如
function foo() {)设断点,实际停在函数体第一行,不是定义本身
F10 和 F11 控制单步执行流
F10 和 F11 只在调试已启动且当前处于暂停状态时才有效——它们不是全局快捷键,而是“调试会话内专用指令”。
-
F10(Step Over):执行当前行,遇到函数调用不进去,直接跳到下一行 -
F11(Step Into):遇到函数调用就钻进去,光标跳转到被调函数第一行;但如果函数来自node_modules或压缩代码,默认会被跳过——需检查launch.json中是否配置了"skipFiles" - 两者都依赖源码映射准确;比如 Python 用
debugpy、Node.js 用sourceMaps: true,否则可能跳到生成代码而非原始文件
调试面板和控制台切换比想象中重要
很多人卡在“看到变量值太慢”,其实不是断点没设对,而是没用对面板切换方式。
-
Ctrl+Shift+Y(Win/Linux)或Cmd+Shift+Y(macOS):快速显示/隐藏「调试控制台」,里面能直接输入表达式(如user.name)实时取值,比 hover 更快更准 -
Ctrl+`:切换集成终端显隐;注意它只是显隐,不是新建实例;需要多任务并行(比如一边npm run dev,一边curl测试)时,用Ctrl+Shift+`新建 shell 标签页 - 调试控制台输出和
console.log是分开的;有些日志只出现在终端,有些只在调试控制台,别只盯一个地方
调试真正卡住的地方,往往不是快捷键记不住,而是 launch.json 配置和断点位置之间的错位——比如 TypeScript 没编译就设断点,或者 Python 脚本路径写成绝对路径导致找不到文件。这些细节不报错,但让断点完全失效。











