调试启动慢主因是语言服务全量索引与调试配置不当;应关闭Pylance全量索引、设justMyCode为true、禁用preLaunchTask、跳过标准库调试,并优化ESLint/Prettier触发时机。

为什么调试启动慢,不是插件没装对,而是配置太莽
VSCode 本身不执行代码,调试性能瓶颈几乎全来自插件配置与语言服务的默认行为。比如 Python 的 Pylance 默认开启全量索引,TypeScript Server 默认扫描 node_modules/@types,这些动作在大型项目中会拖慢调试器 attach 前的准备阶段——你看到的“正在启动调试器”,其实是语言服务在后台疯狂读文件。
关键判断:如果 launch.json 配置正确但“开始调试”按钮点击后卡在“正在初始化…”超 5 秒,大概率是语言服务器或扩展在做同步阻塞操作,而非调试器本身问题。
- Python 项目优先确认
"python.languageServer": "Pylance",并关闭"python.analysis.indexing": false(10k+ 文件项目必须关) - TypeScript/JS 项目检查
"typescript.preferences.includePackageJsonAutoImports": "off",避免 TSServer 自动加载所有依赖类型定义 - 所有调试配置都应设
"justMyCode": true(Python)或"skipFiles": ["<node_internals>/**"]</node_internals>(Node.js),跳过标准库/运行时源码调试
launch.json 里哪些字段真影响调试速度
很多人把 launch.json 当成模板复制粘贴,但其中几个字段直接决定调试器是否要等、等多久、等谁。
-
"subProcess": false(Python):禁用子进程调试,避免调试器监听 fork 出的全部子进程,启动快 30%~40% -
"env": { "PYDEVD_DISABLE_FILE_VALIDATION": "1" }(Python):跳过 pydevd 对源码路径的合法性校验,尤其在符号链接或 Docker 挂载场景下效果明显 -
"runtimeArgs": ["--inspect-brk"](Node.js)配合"port": 9229:比默认"request": "launch"更可控,避免 Chrome DevTools 协议握手超时重试 - 不要加
"preLaunchTask"到调试配置里——除非真需要每次调试前构建;它会强制串行等待,打断快速验证流程
ESLint/Prettier 这类插件怎么调,才不拖慢调试流程
它们不参与调试,但常因保存触发链间接导致调试中断:改一行 → 保存 → ESLint 自动 fix → Prettier 再格式化 → 文件内容变更 → 调试器检测到源码修改,自动 detach。
- 把
"eslint.run": "onSave"改为"onType"是大忌,尤其在 JSX/TSX 中极易触发高频解析;应严格设为"onSave"或更保守的"onDemand" - 关闭
"eslint.format.enable",让 ESLint 只报错不格式化;格式任务交给 Prettier 独占,避免规则打架和重复解析 - 在
.vscode/settings.json中加"files.watcherExclude": { "**/node_modules/**": true },否则 ESLint 启动时可能扫描整个node_modules找配置文件 - 前端项目务必配
eslint-config-prettier,并在.eslintrc.js的extends最末尾加入它——否则 ESLint 仍会执行已被 Prettier 接管的格式规则,白耗 CPU
Quokka 不是玩具,是调试加速器的核心替代方案
真正卡顿的不是调试器,是你反复“保存 → 切浏览器 → 刷新 → 查 console”的上下文切换。Quokka 把这个闭环压进编辑器内,且不依赖完整启动流程。
- 安装后,选中任意 JS/TS 表达式或函数调用,按
Ctrl+K J(Win/Linux)或Cmd+K J(macOS),立刻看到执行结果、变量值、错误堆栈 - 它绕过了 webpack/vite 构建、浏览器加载、DOM 渲染全过程,适合验证算法逻辑、API 响应处理、工具函数等纯 JS 行为
- 注意:Quokka 默认不读取
tsconfig.json的paths别名,需在 Quokka 配置中手动指定tsConfigFile路径,否则@/utils这类导入会报错 - 别把它和调试器对立——Quokka 处理“小片段验证”,调试器解决“状态流转追踪”,两者共存才是高效组合
Developer: Show Running Extensions 里,得靠 Developer: Open Process Explorer 看子进程的 CPU 波动才能定位。



















