code --disable-extensions能打开就一定是扩展问题;主进程在扩展初始化阶段panic退出,甚至来不及报错,需通过清空Extensions目录或逐个启用定位高危插件。

code --disable-extensions 能打开,就一定是扩展问题
VSCode 启动后瞬间消失,不是安装损坏,而是某个扩展在初始化阶段让主进程 panic 退出——它甚至来不及弹错误框。执行 code --disable-extensions 能正常进界面,说明问题 100% 出在启用的扩展里。
注意别拼错:--disable-extension(少 s)会被忽略,依然闪退;macOS 用户若用 Rosetta 运行 VSCode,这个参数可能失效,先右键 App → 显示简介 → 取消勾选「使用 Rosetta 打开」。
- Windows 管理员 CMD 执行:
del /s /q "%APPDATA%\Code\Extensions" - macOS/Linux 终端执行:
rm -rf ~/.vscode/extensions - 删完立刻跑
code --verbose,观察最后几行是否还有Activating extension xxx卡住或报错
闪退时最后一行停在 Splash 或 GPU process
运行 code --verbose 后,终端卡在 Splash: showing splash screen 或反复出现 Failed to launch GPU process,基本锁定是显卡驱动与 Electron 渲染层冲突。Windows 上常见于 NVIDIA 472.x+ 或 AMD Adrenalin 22.5.1+ 驱动版本。
临时验证:用 code --disable-gpu 启动,能进就说明是 GPU 加速问题。
- 永久生效:运行
code --locate-config找到argv.json,添加"disable-hardware-acceleration": true(不是disable-gpu,后者只是命令行参数) - Linux Wayland 用户必须额外加
--enable-features=UseOzonePlatform --ozone-platform=wayland,否则渲染器静默崩溃 - macOS M 系列用户务必确认没勾选「使用 Rosetta 打开」,并用
arch -arm64 code --verbose验证是否真跑在 ARM64 上
Output 面板看不到日志?先选对通道再开插件开关
Output 面板不是自动聚合所有日志的地方,它只显示你手动选中的通道内容。点开后是空的,大概率是因为下拉菜单还停在默认的 Tasks 或 Python,而你想看的是 ESLint、Extensions 或某个插件专属通道(比如 Rust Analyzer)。
很多插件默认不输出详细日志,得单独开开关。例如 Prettier 需设 "prettier.trace.server": "verbose",否则 Output 里什么也看不到。
- 按
Ctrl+Shift+U(Windows/Linux)或Cmd+Shift+U(macOS)直接唤出 Output 面板,比点侧边栏图标更可靠 -
Extensions通道只显示激活/禁用事件,不包含运行时错误;真正崩溃日志常在插件自己的通道里,名称可能随版本变化(如旧版叫Rust,新版叫Rust Analyzer) - 部分插件(如 Live Server)压根不走 Output,日志只打到终端或开发者工具控制台(
F1 → Toggle Developer Tools)
launch.json 的 console 字段配错,调试完终端就关
按 F5 调试 Python,程序一结束终端就消失,不是代码问题,而是 launch.json 里 "console" 没设对。默认值 "internalConsole" 不显示 print()、不支持 input()、调试结束立刻清空——这就是“闪退感”的来源。
可选值只有三个:"integratedTerminal"(推荐)、"externalTerminal"、"none"。别手写 "program": "python" 和 "args": ["-m", "pdb", "${file}"],这会让 VSCode 绕过 debugpy,退化成普通子进程,终端生命周期完全失控。
- 确保已安装
debugpy(虚拟环境中可能缺失):pip install debugpy - Windows 下若选
externalTerminal又用了 PowerShell,它默认执行完关窗;可换cmd,或关掉 PowerShell 的「快速编辑模式」 - 多线程/异步脚本主线程退出后子线程还在刷日志?终端配置救不了,得靠
threading.Event或asyncio.run()收口
settings.json、一个崩掉的 workspaces.json、甚至 globalStorage 里某个插件存的二进制缓存,都可能让 VSCode 在恢复窗口状态时直接退出。


















