调试器类型不匹配是launch.json无法启动的主因:type字段必须与已安装插件提供的调试适配器严格对应,如pwa-chrome需Debugger for Edge、pwa-node需新版Node.js调试器,错配将报“Could not find debugger type”。

调试器类型不匹配导致 launch.json 无法启动
VSCode 默认不内置任何调试器,launch.json 中的 "type" 字段必须对应已安装插件提供的调试适配器。常见错误是写了 "type": "chrome" 却没装 Debugger for Chrome,或写了 "type": "pwa-node" 却只装了旧版 Node.js Debug(已弃用)。VSCode 会直接报错 “Could not find debugger type ‘xxx’”。
- 确认插件是否启用:在扩展面板搜索插件名,检查右下角是否显示“已启用”,而非“已禁用”或“需要重载”
- 注意命名差异:
Debugger for Chrome提供chrome类型;Microsoft Edge Tools提供msedge;Python插件提供python;C# Dev Kit提供coreclr - 新版推荐优先用
pwa-chrome替代chrome,它支持更完整的现代 DevTools 协议,尤其在 Web Workers 和 Service Worker 调试中更稳定
多环境断点不同步,比如 Web + iOS 模拟器同时调试时断点丢失
这不是插件没装全,而是调试协议层未对齐。VSCode 2026 引入的 core 调试类型(见 launch.json 中 "type": "core")才是跨端协同的前提,单装多个独立调试插件(如 Chrome + React Native Tools)反而会造成断点注册冲突。
- 必须统一使用 CPDAL 架构下的调试配置:
"type": "core"+"targetEnvironments": ["web", "ios-simulator"] - 确保各平台代理进程就绪:运行
bridge-ios --port=9229、bridge-web --port=9222,并在launch.json中通过"debugServer"指向对应端口 - 避免混用旧版配置:删掉所有
type: "chrome"或type: "reactnative"的独立配置块,它们与core类型互斥
调试时变量求值失败或显示 Cannot evaluate expression
问题常出在源码映射(source map)和符号解析链路上,尤其涉及 TypeScript、Webpack 构建、或混合语言栈(如 TS + Rust WASM)时。Prettier 或 ESLint 插件本身不参与调试,但若它们修改了文件内容(如保存自动格式化),会导致 source map 偏移。
- 关闭可能干扰构建产物的插件:临时禁用
Prettier、ESLint的保存时格式化功能(设"editor.formatOnSave": false) - 验证 source map 路径:在
launch.json中显式配置"sourceMapPathOverrides",例如"webpack:///./src/*": "${workspaceFolder}/src/*" - 启用 Unified Symbol Server:在用户设置中添加
"debug.javascript.usePreview": true,触发 VSCode 2026 新增的 expr-core 表达式引擎
远程调试 SSH 连接后无法加载本地插件逻辑
Remote - SSH 模式下,所有插件逻辑默认运行在远程机器上,但像 Debugger for Chrome 这类依赖本地浏览器的调试器,其 UI 和部分控制逻辑必须在本地执行——这是 Remote 拓扑的固有限制。
- 必须启用“本地插件”模式:在远程连接后,点击左下角 Remote 状态栏,选择 “Install Local Extensions on SSH”
- 仅限特定插件可本地运行:
Debugger for Chrome、React Developer Tools、Volar支持此模式;而Python、C# Dev Kit必须安装在远程 - 路径映射易错:远程项目路径为
/home/user/project,但webRoot需写成本地视角的映射,例如"webRoot": "${workspaceFolder}"(此时${workspaceFolder}解析为本地挂载路径)
真正卡住多维度调试的,往往不是插件数量,而是调试类型声明、source map 控制权、以及本地/远程执行域的边界意识。一个 "type": "core" 配置能替代五个独立插件,但前提是理解它背后那套代理桥接机制。


















