断点需设在可执行语句且启用sourcemaps才有效;f10跳过函数、f11进入函数、shift+f11跳出函数;变量仅显示当前作用域实时值,注意异步与作用域时机。

怎么设置断点并确保它真能停住
断点设了却不暂停,是最常被当成“调试器坏了”的假故障。根本原因往往不是 VS Code 本身,而是断点位置没落在可执行语句上,或调试器压根没加载源码映射(source map)。
- 图形化设置:点击行号左侧空白处出现实心红点才算成功;空心圆是“未绑定断点”,说明该行无法中断(比如纯注释、空行、或 TypeScript 编译后未生成
sourceMaps) - 函数内部、
Promise.then()回调、setTimeout里设断点,必须确认代码已实际执行到那一步——光写在那里不会触发 - TypeScript 或 Webpack 项目务必在
launch.json中开启"sourceMaps": true,否则断点会“漂移”或失效 - Python 用户注意:
justMyCode默认为true,第三方库里的代码进不去;要调试requests或numpy内部,得显式设为false
F10 / F11 / Shift+F11 到底在跳什么
这三个快捷键控制的是“当前执行上下文的粒度”,不是“代码行数”,理解错就会误判逻辑走向。
-
F10(Step Over):执行当前行,但不进入函数体——哪怕这行调用了fetch()或process_data(),也直接跳到下一行 -
F11(Step Into):只要当前行有函数调用,就钻进去;但如果函数是内联、优化过、或没 source map,它会退化成F10 -
Shift+F11(Step Out):立刻跳出当前函数,回到它的调用者那一行——适合你已经确认函数内部没问题,只想快进 - 特别注意异步:在
await apiCall()行按F10,不会等响应回来再走下一行;它只是“发请求+挂起”,然后继续跑后续同步代码
为什么变量面板里看不到我想要的值
不是变量不存在,而是你停在了错误的作用域或错误的时间点。VS Code 的变量面板只显示“当前堆栈帧”里的东西,且所有值都是实时求值,不是快照。
威博仿淘宝多用商城程序于4月底发布公测以来,得到了广大用户的关注和支持,陆续有很多意见和建议反馈到威博网络技术部。广泛的关注与支持,也是威博仿淘宝多用商城程序不断进步的一个重要原因。威博网络有这么多忠实的支持者才会有今天的成绩。经过一个多月的在线测试,威博仿淘宝多用商城程序有望于6月底正式对外发布销售!这套购物网站源代码/购物网站系统免费下载--威博网络是在多用户网上商城系统的基础上,全面整合仿淘
- 鼠标悬停看变量最省事,但悬停时若变量还没声明(比如
let user;后还没赋值),就显示undefined,这不是 bug - 想查深层嵌套对象(如
response.data.items[0].name),别反复展开;右键属性 →Store as global variable,起个临时名(如tempItem),再在Watch面板里输tempItem.name -
Debug Console里输入表达式可以强制求值,但别调用带副作用的函数(比如saveToDB()),有些调试器会阻止,有些则真会执行 - Python 调试中,如果
args是命令行参数,在launch.json里漏配"args"字段,sys.argv就永远只有脚本名
launch.json 里哪些字段改了会影响调试行为
launch.json 不是摆设,几个关键字段一错,F5 就启动失败或行为诡异。
-
"program"必须指向真实可执行入口;Node.js 项目填${workspaceFolder}/index.js,Python 填${file}(当前文件)或具体路径;填错会报Cannot find module -
"console"决定输出在哪:选integratedTerminal才能在 VS Code 底部看到print()或console.log();选internalConsole可能看不到 Python 的input()提示 -
"envFile"比硬编码"env"更安全,尤其对接 API 密钥或数据库地址;但记得把.env.*加进.gitignore - 多服务项目(如前端+后端)别硬塞进一个配置,用
compounds合并多个configurations,避免手动启两个终端再挨个 F5
真正卡住的时候,90% 不是 VS Code 有问题,而是断点没绑上、source map 没开、作用域没切对、或者你以为该有的变量其实还没运行到赋值那步。盯住调用栈面板(CALL STACK)和 Debug Console 的报错信息,比反复点 F5 有用得多。









