main.log是vscode启动失败时首个必查日志,记录进程拉起至窗口创建前全过程;缺失则表明electron初始化已失败,需检查二进制完整性或系统权限;路径为windows %appdata%\code\logs、macos ~/library/application support/code/logs、linux ~/.config/code/logs。

VSCode 启动失败时,main.log 是第一个必须看的文件;它记录了从进程拉起、用户数据目录加载、扩展初始化到窗口创建前的所有关键步骤,卡在哪一行,问题基本就在哪。
启动失败时优先检查 main.log 的位置和内容
main.log 是主进程日志,只要 VSCode 进程跑起来了(哪怕窗口没出现),它就一定存在。缺失这个文件,说明连 Electron 初始化都失败了——大概率是二进制损坏或系统级权限/沙箱拦截。
- Windows 路径:
%APPDATA%\Code\logs\ - macOS 路径:
$HOME/Library/Application Support/Code/logs/ - Linux 路径:
$HOME/.config/Code/logs/
用 Cmd+Shift+P(macOS)或 Ctrl+Shift+P(Windows/Linux)执行 Developer: Open Logs Folder 最快,直接打开对应目录。别手动拼路径,多用户或便携版下容易错。
看到 Extension host terminated unexpectedly 怎么办
这是扩展主机进程崩溃的典型信号,不是某一个扩展报错,而是整个扩展运行环境挂了。日志里紧跟着的 ERR! 行往往指向真正的问题源头。
- 临时禁用所有扩展:
code --disable-extensions --log trace,再试启动 - 若能启动,说明问题出在扩展;逐个启用,每次启完观察
main.log是否再次出现该错误 - 特别注意刚更新或非官方源安装的扩展,比如解压不全的
.vsix包会卡在Starting extension host with pid XXXX后无响应
日志里反复出现 Failed to create GPU process
这是 Electron 渲染层 GPU 沙箱启动失败,常见于显卡驱动老旧、远程桌面环境或某些安全软件拦截。它不一定导致完全无法启动,但会造成界面卡顿、闪烁甚至白屏。
- 快速验证:加参数启动
code --disable-gpu --log trace,如果能正常打开,基本锁定 GPU 相关问题 - 更彻底的绕过:用
code --disable-gpu-sandbox,但仅用于排查,不建议长期使用 - macOS 上尤其注意 Sequoia 系统与某些闭源显卡驱动的兼容性,日志里若同时出现
ENOENT: no such file or directory, open '/.../globalStorage/',要检查用户数据目录权限是否被系统策略重置
终端命令行启动时看不到错误?用 --log trace --verbose
图形界面启动失败时,GUI 层会吞掉早期错误。命令行强制输出是最直接的断点定位方式。
-
code --log trace --verbose会在终端实时打印初始化流程,最后一行就是卡死位置 -
--log trace生成带时间戳的新日志文件,不会覆盖旧记录,适合对比多次启动行为 - Windows 用户若提示
'code' is not recognized,别改 PATH,直接用完整路径:C:\Users\XXX\AppData\Local\Programs\Microsoft VS Code\Code.exe --log trace --verbose
真正难定位的不是报错本身,而是报错发生的上下文顺序——比如某个扩展在 workbench.main.js 加载完成前就调用了未就绪的 API,这种问题只在 trace 级别日志里才暴露得出来。











