VS Codeのフリーズや異常動作をExtension Bisectで特定する
この記事の結論
拡張なしの起動とExtension Bisectを同じファイル・操作で比較し、判定のぶれを抑えます。候補の拡張を通常環境で再確認し、無効化の範囲と発行元へ渡す情報を整理します。
一般的な切り分けガイドです。特定の不具合が現在発生しているという告知ではありません。
対象製品・影響範囲
- 製品
- Visual Studio Code
- 対象バージョン・条件
- VS Code desktop
発生する症状
- 拡張機能導入後に入力や保存が不安定
- 拡張機能を全停止すると改善する
原因・発生条件
Extension Bisectで有効な拡張を半分ずつ切り分けます。
作業前の準備
- 作業前に有効な拡張機能一覧、ワークスペース名、再現操作を記録・保全します。
- 変更は一項目ずつ行い、各段階で元の症状を再現して結果をメモします。
- 再現するファイル形式、ワークスペース、拡張IDと版、保存や補完など失敗する操作を控えます。Remote/WSL/コンテナーを使うなら接続種類も記録します。再読み込みが続くため未保存のコードとターミナル作業を保存し、各回で同じファイルを開ける状態にしてからBisectを開始します。
この操作の注意点
- 確認対象と無関係な設定やデータをまとめて削除しません。
- 診断記録には個人情報や認証情報を含めず、有効な拡張機能一覧、ワークスペース名、再現操作のうち必要な範囲だけ共有します。
使用するツール・公式ページ
この手順の設定名、制限事項、更新された分岐を公式ページで確認できます。
Visual Studio Code公式ダウンロード。アプリ本体の再導入が必要な場合に使用します。
具体的な操作手順
同じフォルダーと操作で再現させ、未保存ファイルを保存します。
空のウィンドウで直るならワークスペース設定も記録します。
[拡張機能]ビューの[…]→[Enabled]で対象集合を確認し、Remote/WSL側だけに入った拡張かも区別します。
VS Codeの[表示]→[拡張機能]を開き、検索欄へ @enabled と入力して有効な拡張を確認します。Remote接続中なら左下の接続表示も控え、ローカル側との混同を避けます。
再現操作は「ファイルを開く→一行変更→保存」のように順番まで記録します。固まるまでの待ち時間、対象言語、ファイルサイズも控えます。拡張を減らした後に別ファイルを開くと負荷や起動する言語サーバーが変わり、同じ症状を比較したことにならないためです。
コマンドパレットから Developer: Reload With Extensions Disabled を実行します。
直らなければ拡張原因と決めつけずVS Code本体や設定を調べます。
最初に全拡張が無効になった状態で症状が残れば、Bisectは拡張を犯人にせず終了できます。この基準テストが誤判定を防ぎます。
全拡張無効で症状が残る場合は空ウィンドウと対象ワークスペースを比較します。重いファイル、ワークスペース設定、Remote接続、タスク実行など独立した条件を記録します。全無効で直らないことは診断失敗ではなく、拡張だけを原因にする判断を避ける情報です。
Help: Start Extension Bisectを実行し、各再読み込み後にGood nowかThis is badを正確に選びます。
途中で別の操作を混ぜると判定が崩れるため同じ再現手順を使います。
Good nowは現在の有効集合では直った、This is badはまだ再現するという意味です。症状が曖昧なまま回答せず再現操作を完了します。
無効化の範囲はDisableとDisable (Workspace)を区別します。ワークスペース限定は他プロジェクトへの影響を抑えますが、そこで必要な機能は止まります。候補が提供するフォーマッターや補完を把握し、代替操作で作業できるかを確認してから通常環境へ戻します。
候補を無効化し通常再読み込みで再検証します。更新、設定変更、発行元へのログ付き報告を行います。
アンインストール前に拡張IDと版、設定を控えます。
特定後は拡張の歯車→[Disable (Workspace)]なら現在のプロジェクトだけ、[Disable]なら全体に適用されます。影響範囲を選びます。
この手順で使う公式リンク
- Visual Studio Code 公式トラブルシューティング
この手順の設定名、制限事項、更新された分岐を公式ページで確認できます。
- Visual Studio Code 公式ダウンロード
Visual Studio Code公式ダウンロード。アプリ本体の再導入が必要な場合に使用します。
- Visual Studio Code 公式トラブルシューティング
保存時に固まるなら、同じファイル形式・同じ保存操作・同じワークスペースで各回を試します。保存時のフォーマットと補完では動く拡張が異なるため、途中で症状の定義を変えると候補が絞れなくなります。
再読み込み直後の初期化を待ってから判定します。言語サーバーが起動する前には出ない症状を、数秒の待ち時間だけでGoodと判断しないようにします。再現しないことを確認できない回は推測で答えず、操作をやり直します。
Remote/WSL/コンテナーでは拡張がどこで実行されているかも控えます。ローカルだけで直る場合は、通信遅延やリモート側の言語サーバー状態も候補となり、拡張IDだけでは環境差を説明できません。
候補が出た後はBisectを終了して通常の有効集合へ戻し、候補だけを無効にして比較します。再有効化で再発し、無効化で改善するかを同じ操作で確認すると、一時的な改善を誤って原因確定にしにくくなります。
複数拡張の組み合わせでのみ発生する場合は、特定結果を出発点として依存拡張と設定も確認します。報告には拡張ID、版、Remoteの種類、再現操作を添え、非公開コードの本文は共有しません。
改善したか確認する
- 原因候補だけを無効にした通常ウィンドウで保存・補完・ターミナル操作を再確認する
- 問題の操作以外の基本機能も確認し、修正による副作用がないことを確かめます。
改善しない場合・設定を戻す場合
- Help: Report IssueでExtensionを選び、拡張ID・版・再現手順を発行元へ送る
- 回避策で作業を続ける場合も、原本やアカウントデータを別の場所へ保全します。
このガイドの適用範囲
対処ガイド — 拡張なしの起動とExtension Bisectを同じファイル・操作で比較し、判定のぶれを抑えます。候補の拡張を通常環境で再確認し、無効化の範囲と発行元へ渡す情報を整理します。
掲載内容は2026-10-13の情報確認に基づきます。以降の変更は公式出典でご確認ください。
よくある質問
Bisectで設定は消えますか?
拡張を一時的に有効・無効化する診断で、通常は設定削除ではありません。
最初の全無効でも直りません。
拡張以外が原因という重要な結果です。
症状が時々しか起きません。Bisectは使えますか?
不安定な再現ではGood/Badの判定が揺れます。まず対象ファイルと起動後の待ち時間を固定し、判断できるまで同じ操作を試します。再現しない一回だけを原因確定にせず、候補特定後に通常環境でも有効・無効の比較を行います。
候補を無効にしてもまだ固まります。
Bisect中と通常状態の条件が違わないか確認します。複数拡張の相互作用やRemote側の問題もあるため、全無効、候補だけ有効、通常集合から候補だけ無効を区別して記録します。発行元には版と再現操作を渡します。
出典・情報の更新
- 主な出典の更新・解決日
- 公式ページで日付を特定できないため記載していません
- 本サイトの確認日
- 2026-10-13
公式情報を日本語で整理しています。メニュー名は製品の表示言語や版によって異なる場合があります。確認日は障害の発生日を意味しません。編集方針