Debug Adapter Process Has Terminated Unexpectedly 根本原因是 Extension Host 崩溃,而非 debugpy 或 launch.json 配置问题;需先用 code --disable-extensions 验证,再通过 Console 或 Extension Host 日志定位崩溃插件,最后用 affinity 隔离或禁用修复。

Debug Adapter Process Has Terminated Unexpectedly 是扩展宿主崩溃,不是 debugpy 或 launch.json 的问题
这个报错表面在说“调试适配器进程意外终止”,但真实原因是 Extension Host 进程在启动 debugpy、delve 或 vscode-node-debug2 前就挂了。你改 launch.json、重装 Python、甚至换解释器都无效——因为调试器根本没机会加载。
常见错误现象包括:
- F5 启动调试瞬间弹窗,控制台无任何 Python 日志输出
- 右下角语言模式正常,但“Run and Debug”侧边栏空白或不响应
- 终端里看不到
debugpy进程启动痕迹(如python -m debugpy --listen ...)
先用 code --disable-extensions 确认是不是插件导致的
别碰配置,直接验证根源:
- Windows / Linux:终端执行
code --disable-extensions - macOS:确保已运行
code --install-extension配置过命令行工具,再执行code --disable-extensions
如果此时 F5 调试能正常跑起来,说明 100% 是某个扩展引发的 Extension Host 崩溃。注意:仅在设置里禁用扩展、或只禁用当前工作区的扩展,完全无效——必须用 --disable-extensions 全局绕过所有第三方代码加载。
定位元凶扩展:看 Console 日志比禁用一半插件更准
按 Ctrl+Shift+I(macOS 是 Cmd+Option+I)打开开发者工具,切到 Console 标签页,等下一次弹窗出现。重点关注:
- 以
FATAL ERROR: Ineffective mark-compacts near heap limit开头的行 → 内存吃满,大概率是ms-python.python或esbenp.prettier-vscode - 含
SIGSEGV或Code: null Signal: SIGSEGV的行 → 原生模块访问非法内存,常见于旧版ms-vscode.cpptools或 AI 补全类插件 - 堆栈里反复出现的扩展 ID,例如
at ExtensionHostProcess._onExtProcessError下一行紧跟着ms-python.python或bradlc.vscode-tailwindcss
如果 Console 空空如也,立刻切到「输出」面板(Ctrl+Shift+U),下拉选 Extension Host,滚动到底部找最近的 ERROR 行,尤其是 Activating extension 后面跟着的扩展名。
临时修复和长期隔离:别急着卸载,先设 affinity
找到问题扩展后,优先尝试轻量干预而非卸载:
- 在
.vscode/settings.json中加:"extensions.experimental.affinity": { "ms-python.python": 2 }—— 值为2表示让该扩展跑在独立 Node.js 进程中,崩溃不会拖垮整个Extension Host - 配合
"files.watcherExclude": { "**/node_modules/**": true, "**/dist/**": true },避免 chokidar 监听数万小文件耗尽 inotify 句柄 - 检查是否开了冲突扩展:比如同时启用
ms-python.python和ms-python.pylance,或esbenp.prettier-vscode+dbaeumer.vscode-eslint+editorconfig.editorconfig三者都设为保存时格式化
真正容易被忽略的是:某些扩展(如 Continue、augment)在离线环境或代理异常时会陷入无限网络请求重试,还没激活就已把 exthost 拖垮——这种情况下,affinity 也救不了,得先关掉它的联网功能或彻底禁用。


















