VSCode启动卡住原因分析_解决VSCode启动卡顿问题

10次阅读

vscode启动卡在“正在加载扩展”界面,主因是扩展激活时执行阻塞操作;其次为杀软拦截、错误配置或storage.json损坏,需按顺序排查。

VSCode启动卡住原因分析_解决VSCode启动卡顿问题

VSCode 启动卡在“正在加载扩展”界面

这是最常见卡顿场景,本质是某个扩展在激活阶段执行了阻塞式操作(如同步网络请求、大文件读取、未加超时的 fs.readFileSync),导致主进程挂起。VSCode 1.80+ 已默认启用扩展主机沙箱,但旧版或禁用沙箱后仍易触发。

  • 快速验证:启动时加 --disable-extensions 参数,若秒开则确认为扩展问题
  • 定位罪魁:启动后立即打开命令面板(Ctrl+Shift+P),运行 Developer: Show Running Extensions,观察哪些扩展长期显示“Activating…”
  • 临时隔离:在 ~/.vscode/extensions/ 中重命名可疑扩展目录(如 esbenp.prettier-vscode-9.10.3esbenp.prettier-vscode-9.10.3.disabled),重启测试
  • 注意:部分扩展(如 ms-python.python)首次激活会预编译语言服务器,耗时属正常,但不应超过 15 秒;超时即需排查其日志

windows 上因杀毒软件拦截 Code.exenode.exe

尤其在企业环境,Windows Defender 或第三方杀软(如 McAfee、Symantec)会对 VSCode 主进程及其子进程(尤其是 node.exe 扩展主机)反复扫描,造成大量 I/O 等待,表现为启动后 CPU 占用低但无响应。

  • 检查方法:任务管理器中查看 Code.exe 和子进程 node.exe 的“磁盘”列是否持续 100%,右键“打开文件位置”确认路径是否被杀软标红
  • 解决方案:将 VSCode 安装目录(如 C:UsersnameappDataLocalProgramsmicrosoft VS Code)及用户数据目录(C:UsersnameAppDataRoamingCode)加入杀软白名单
  • 关键点:必须同时放行 Code.exe 和其调用的 node.exe(位于 resourcesappoutvsworkbenchservicesextensionsnode_modules.asar.unpackedvscode-js-debuglibextensiondebugAdapter.js 等路径下)

settings.json 中配置了高开销的全局搜索或文件监听

某些看似无害的设置会在启动时触发全盘扫描,例如 "files.watcherExclude" 配置错误、或 "search.exclude" 使用了通配符但路径不存在,导致 VSCode 底层 chokidar 尝试遍历无效路径。

  • 典型错误配置:
    "search.exclude": {   "**/node_modules": true,   "**/dist": true,   "/home/user/project/**": true }

    ——末尾路径为绝对路径且不存在,VSCode 会尝试解析并递归检查,卡死在 fs.stat

  • 安全写法:所有 exclude 规则必须是相对路径模式(用 **/xxx),避免出现 /full/path/C:\path\
  • 验证方式:临时重命名 settings.jsonsettings.json.bak,用默认配置启动;若恢复流畅,逐条注释原配置定位问题项

用户数据目录损坏导致 workspaces.jsonstorage.json 解析失败

VSCode 启动时需加载工作区历史和 ui 状态,若 storage.json(存储扩展状态、窗口布局等)因异常关闭而损坏,JSON 解析会卡住或抛错但不报 UI 提示。

  • 路径定位:~/.vscode/storage.jsonlinux/macOS)或 %APPDATA%Codestorage.json(Windows)
  • 修复步骤:关闭 VSCode → 备份原 storage.json → 删除它 → 重启 VSCode(会自动生成新文件,丢失上次窗口布局但可接受)
  • 进阶检查:用 jq 或在线 JSON 校验工具打开 storage.json,确认是否含非法字符(如未转义的换行、bom 头、UTF-8 编码错误)
  • 预防:禁用自动保存工作区到云端("workspaces.experimental.cloud 设为 false),减少跨设备同步引发的格式冲突

真正难排查的往往是组合问题:杀软 + 某个扩展的初始化逻辑 + 用户目录里一个损坏的 storage.json。建议按顺序逐项排除,别跳步。每次修改后务必完全退出 VSCode(包括系统托盘进程),再重新启动验证。

text=ZqhQzanResources