できない.dev

VSCode の拡張機能ホストが落ちて拡張が使えない

「Extension host terminated unexpectedly」が出ると拡張機能が全停止する。
原因は特定拡張のクラッシュ・メモリ不足・互換性問題で、拡張を二分探索して犯人特定するのが最短ルート。

#vscode#extension#crash#extension-host#debug

公開:

要約

拡張機能ホストが落ちる原因の大半は「特定拡張のクラッシュ」。
Developer Tools でログを確認するか、拡張を全無効化して二分探索で犯人を特定する。
回復したら個別に有効化し直して再現性を確認する。

よくある原因

  1. 特定拡張のクラッシュ: 最近インストール / 更新した拡張が新 VSCode と非互換で落ちる
  2. メモリ不足: 巨大モノレポや大量タブで Node 側が OOM
  3. 本体バージョン非対応: 拡張の engines.vscode を満たさない VSCode で動かしている
  4. 設定ファイル破損: settings.json のシンタックスエラーや非対応スキーマで起動時にエラー
  5. ストレージ問題: globalStorage 配下のキャッシュ破損

解決策

1. 拡張を二分探索する

コマンドパレットで Extensions: Disable All Installed Extensions を実行して再起動する。
落ちないなら、半数だけ有効化 → 再起動を繰り返して犯人を特定する。
Marketplace の運用は公式の Extension Marketplace ドキュメント を参照。

2. 拡張ホストログを確認する

Help > Toggle Developer Tools を開きコンソールタブを確認する。Output パネルでも Extension Host チャンネルにエラーが出力される。
拡張ホストの仕組みは公式の Extension Host 解説 を読むとログの位置づけが分かる。

3. クリーンプロファイルで起動する

code --disable-extensions --user-data-dir=/tmp/vscode-clean

ここで落ちなければユーザーデータ側の問題、落ちるなら本体側の問題と切り分けできる。

4. ストレージをクリアする

OS ごとに以下のディレクトリを バックアップしてから 退避する。

macOS:   ~/Library/Application Support/Code/User
Linux:   ~/.config/Code/User
Windows: %APPDATA%\Code\User

globalStorage のキャッシュ破損が原因の場合、退避してから再起動すると初期状態で立ち上がる。
問題が消えたら必要な設定だけ戻していく。

この記事は役立ちましたか?