code --disable-extensions 是唯一可信起点:若VSCode闪退、白屏或反复弹“Extension host terminated unexpectedly”,必须先执行该命令验证是否插件导致;若禁用后正常,则100%为插件问题,再用Developer: Start Extension Bisect二分排查肇事插件。

code --disable-extensions 是唯一可信的起点
只要 VSCode 出现闪退、白屏、反复弹 Extension host terminated unexpectedly,第一件事必须是终端执行 code --disable-extensions。这不是“试试看”,而是唯一能绕过所有插件加载逻辑的方式:它不读 settings.json、不扫描 .vscode/extensions.json、不触发任何插件的 activate() 函数。
常见错误现象:
- 点 UI 上的“禁用全部扩展”后仍崩溃 → 那只是写配置项,启动早期注入(如
ms-python.python)早已发生 - macOS 提示
command not found: code→ 去 VSCode 菜单选Shell Command: Install 'code' command in PATH - Windows 用户在 Win+R 里输
cmd后直接运行该命令即可,别加引号或拼错extensions
Developer: Start Extension Bisect 比手动禁用快十倍
确认是插件问题后,别一个个点“禁用→重启→测试”,尤其当你装了 50+ 插件时。VSCode 内置的二分排查工具能在 3–4 轮内锁定肇事插件,且能暴露“组合冲突”——比如 esbenp.prettier-vscode 和 dbaeumer.vscode-eslint 单独都正常,一起开就崩。
实操要点:
- 按
Ctrl+Shift+P(Win/Linux)或Cmd+Shift+P(macOS),输入并运行Developer: Start Extension Bisect - 每次重启后只回答“是”(问题复现)或“否”(正常),不用管插件名或顺序
- 若某轮后只剩 1–2 个插件,用
code --disable-extension ms-python.python单独验证,避免误判
日志和进程观察比 UI 状态更真实
很多崩溃发生在日志写入前,所以不能只信弹窗或插件面板里的“已启用”。真正可靠的信号来自三处:
-
Developer: Open Extension Host Log→ 滚到底部找Error或FATAL ERROR,重点关注at .../ms-python.python-2026.3.1/dist/extension.js:123这类路径 -
Developer: Show Running Extensions→ 看Activation Time > 1000ms或Status为Activation failed的插件 - 任务管理器里筛选
exthost进程 → 启用某个插件后 CPU 突升或进程直接消失,基本就是它
特别注意:旧版 Python、SFTP、AI 补全类插件常因路径含空格/中文、权限不足或调用废弃 API 导致静默失败,这类错误几乎不会出现在 UI 提示里,只藏在日志末尾或进程退出码中。
删目录比禁用更彻底,但得知道删谁
某些插件被“禁用”后仍会尝试初始化(比如老版本 ms-python.python),残留逻辑照样触发崩溃。这时禁用只是假象,必须物理删除对应目录。
操作方式:
- Linux/macOS:
rm -rf ~/.vscode/extensions/ms-python.python-*(通配符匹配版本号) - Windows:进
%USERPROFILE%\.vscode\extensions\,手动删掉以ms-python.python-开头的文件夹 - 删完不用重启系统,直接再跑
code就行 —— VSCode 启动时发现目录不存在,自然跳过加载
真正麻烦的不是插件多,而是某些插件在启动时 spawn 外部进程(如 Python 解释器、SSH 客户端),而这些子进程的失败不会反馈到主界面,只卡在 IPC 层或静默退出 —— 这类问题必须靠 code --disable-extension 逐个隔离,日志也未必能捕获完整链路。


















