code --disable-extensions 是唯一能100%跳过插件加载的方式,若此时正常启动则问题必在插件;否则需查 --verbose 输出或系统兼容性,并检查 extensions.disabledextensions 是否被静默写入。

code --disable-extensions 是唯一能确认是否为插件崩溃的起点
VSCode 更新后闪退、白屏或卡在“Activating Extensions”,code --disable-extensions 是唯一能 100% 跳过所有插件加载流程的方式。它不读 settings.json、不扫描 .vscode/extensions.json、不调用任何插件的 activate() 函数——连 ms-python.python 那种启动早期就注入代码的插件也会被彻底绕过。如果此时秒开且无报错,问题 100% 在插件;如果还崩,得查 code --verbose 输出或系统架构兼容性(比如 Apple Silicon 上误启 Rosetta)。
检查 extensions.disabledExtensions 是否被自动写入
VSCode 1.102+ 对 "engines": {"vscode": "..."} 的校验变严,旧插件常被静默禁用,但禁用状态不会体现在 UI 开关上——你看到“已启用”,其实它根本没加载。运行 Extensions: Show Installed Extensions,右上角筛选器选 Disabled,若插件出现在这里,且详情页顶部标着 Disabled,基本就是版本不匹配导致。控制台里会明确报错:Extension 'esbenp.prettier-vscode' is not compatible with Code '1.118.0'。别信状态栏图标,输 prettier.format 命令看是否返回 command 'prettier.format' not found 才算真实验证。
用 code --disable-extension 精准定位崩溃插件
当确认是插件问题后,--disable-extension 比图形界面禁用更彻底:它跳过插件的 activate() 调用,避免残留监听器干扰。操作步骤如下:
- 先列出所有插件:
code --list-extensions - 优先试高危对象:
code --disable-extension ms-python.python、code --disable-extension esbenp.prettier-vscode、code --disable-extension ms-vscode-remote.remote-ssh - 若仍崩溃,可一次禁用多个:
code --disable-extension dbaeumer.vscode-eslint --disable-extension bradlc.vscode-tailwindcss - 注意:
--disable-extension只影响本次启动,不影响插件文件本身
某些插件(如旧版 Python 或 SFTP)即使被 UI 禁用,仍会在启动时尝试 spawn 外部进程,而路径含空格、中文或权限不足会导致静默失败——这种错误只藏在 exthost1.log 末尾,不会弹窗提示。
Developer: Open Extension Host Log 是崩溃前最后一道线索
扩展宿主崩溃往往发生在日志初始化前,所以日志为空 ≠ 没问题。但只要它成功写入了内容,末尾的 ERROR 行就是最直接证据。打开 Developer: Open Extension Host Log,重点搜关键词:Extension host terminated unexpectedly、ERR!、Cannot read property。典型线索如:
ERROR Error: Cannot read property 'onDidChangeActiveTextEditor' of undefined
at activate (/Users/xxx/.vscode/extensions/esbenp.prettier-vscode-9.10.3/dist/extension.js:1)
这里的 esbenp.prettier-vscode-9.10.3 就是直接责任人。若日志完全空白,说明崩溃太早,必须退回命令行阶段用 --disable-extension 逐个排除。真正麻烦的不是插件多,而是某些插件卡在激活阶段却不报错,让后续所有插件排队等它——这类问题单靠日志容易漏掉。











