に参加して、VS Code の AI 支援開発について学びましょう。

ターミナルの起動失敗をトラブルシューティングする

まず、Visual Studio Code の統合ターミナルを楽しく利用する代わりに、このドキュメントを読んでいることをお詫び申し上げます。VS Code チームは、ターミナルエクスペリエンスをできるだけシームレスにするために努力していますが、シェルまたはターミナル構成に、VS Code エディターでは回避できない問題が発生する場合があります。

何百人もの開発者と協力してターミナルの起動失敗を診断してきた結果、VS Code チームは、過去に人々を助けてきたアドバイスとトラブルシューティングのヒントをまとめたこの記事を作成しました。シェルまたはターミナルの問題に対する解決策をここで見つけ、すぐに作業に戻れることを願っています。

統合ターミナルユーザーガイド

VS Code 統合ターミナルの使用に慣れていない場合は、統合ターミナルユーザーガイドで詳細を確認できます。そこでは、ターミナルを構成する方法や、よくある質問への回答を確認できます。

ユーザーガイドで起動失敗を診断できなかった場合は、以下の特定のトラブルシューティング手順に従ってください。設定の確認やログの有効化などのトラブルシューティング手順は、VS Code をサポートするすべてのプラットフォーム(macOS、Linux、Windows)に適用されます。

: Windows を使用している場合は、まずWindows での一般的な問題セクションを確認することをお勧めします。

トラブルシューティング手順

Visual Studio Code で統合ターミナルの起動失敗をトラブルシューティングするには、次の手順に従って問題を診断してください。

  1. ユーザー設定を確認してください。起動に影響する可能性のある、以下のterminal.integrated設定を確認してください。

    • terminal.integrated.defaultProfile.{platform} - ターミナルが使用するデフォルトのシェルプロファイル。
    • terminal.integrated.profiles.{platform} - 定義されたシェルプロファイル。シェルパスと引数を設定します。
    • terminal.integrated.cwd - シェルプロセスの現在の作業ディレクトリ(cwd)。
    • terminal.integrated.env.{platform} - シェルプロセスに追加される環境変数。
    • terminal.integrated.inheritEnv - 新しいシェルが VS Code から環境を継承するかどうか。
    • terminal.integrated.automationProfile.{platform} - タスクやデバッグなど、自動化関連のターミナル使用のためのシェルプロファイル。
    • terminal.integrated.splitCwd - 分割されたターミナルが起動する現在の作業ディレクトリを制御します。
    • terminal.integrated.windowsEnableConpty - Windows ターミナルプロセス通信に ConPTY を使用するかどうか。

    設定エディター(ファイル > 基本設定 > 設定)で設定を確認し、設定 ID で特定の設定を検索できます。

    Search for Integrated terminal settings

    気づかないうちに設定を変更していないかをすばやく確認する方法は、設定エディターで@modifiedフィルターを使用することです。

    Filter for modified settings

    ほとんどの統合ターミナル設定は、ユーザーのsettings.json JSON ファイルで直接変更する必要があります。settings.jsonは、設定エディターのsettings.json で編集リンクから、またはコマンドパレット(⇧⌘P(Windows、Linux Ctrl+Shift+P)から基本設定: ユーザー設定を開く (JSON)コマンドで開くことができます。

    A user's settings.json file

  2. シェルを直接テストする。指定された統合ターミナルシェルを、外部ターミナルまたはコマンドプロンプトから VS Code の外部で実行してみてください。一部のターミナル起動失敗は、シェルインストールに起因するものであり、VS Code に固有のものではありません。表示される終了コードはシェルから取得されるため、特定のシェルと終了コードをインターネットで検索することで、シェル問題を診断できる場合があります。

  3. VS Code の最新バージョンを使用する。各 VS Code 月次リリースには多くの更新と修正が含まれており、統合ターミナルの改善が含まれている場合があります。VS Code のバージョンは、ヘルプ > バージョン情報(macOS ではCode > Visual Studio Code について)で確認できます。VS Code の最新バージョンを見つけるには、VS Code のリリースノートにアクセスしてください。シェルの最新バージョンがインストールされていることも確認してください。

  4. シェルの最新バージョンを使用する。シェルがプラットフォームとは別にインストールされている場合は、利用可能なシェルの最新バージョンをインストールしてみてください。オペレーティングシステムの古いビルドを使用している場合も同じアドバイスが適用されます。たとえば、Windows 10 の一部の古いバージョンは、VS Code ターミナルと連携しませんでした。

  5. トレースログを有効にする。トレースログを有効にして、ターミナル起動時にログをキャプチャできます。ターミナルプロセス/pty の作成に使用されたすべての引数が記録されるため、ログは問題の原因を明らかにすることがよくあります。不正なシェル名、引数、または環境変数により、ターミナルが起動しない場合があります。問題が解決しない場合は、このログを後で参照するために保存しておいてください。

追加のトラブルシューティング手順

これらの手順のいずれも問題の解決に役立たなかった場合は、以下も試すことができます。

  • Stack Overflowで質問してください。多くの場合、起動の問題は環境設定に関連しており、VS Code の問題ではありません。
  • ターミナルが拡張機能から起動されている場合は、問題レポーター(ヘルプ > 問題を報告)を開き、ファイルオンを「拡張機能」に設定して、拡張機能に問題を報告してください。
  • VS Code のバグであると思われる場合は、問題レポーター(ヘルプ > 問題を報告)を使用して問題を報告してください。問題レポーターは関連情報を自動入力します。レポートに他に含めるべきことについては、優れたターミナル問題を作成するを参照してください。
  • Windows 10 1809(ビルド 17763)以前を使用している場合、問題は従来の「winpty」バックエンドに関連しています。Windows 1903(ビルド 18362)にアップグレードすると、Microsoft によって構築された新しい「conpty」バックエンドに移行し、問題が解決する可能性があります。
  • ターミナルが管理者としてのみ実行するように設定されており、VS Code を管理者として起動していない場合、ターミナルを開くことができません。デフォルトのターミナルを変更するか、ターミナル exe のプロパティを編集して管理者として実行しないようにすることができます。

終了コード

ターミナル起動失敗通知に表示される終了コードは、シェルプロセスから返されるものであり、VS Code によって生成されるものではありません。ターミナルで使用できるシェルは多数あり、数百の可能性のある終了コードがあります。

  • 特定のシェルと終了コード(例: 「PowerShell 4294901760」)をインターネットで検索してみてください。ターミナル起動失敗に関連する特定の提案や既知の問題が見つかる場合があります。
  • シェルの問題リポジトリで検索してみてください。たとえば、WSL で問題が発生している場合は、https://github.com/microsoft/WSL/issues のオープンまたは解決済みの問題でエラーコードを検索すると、回避策が見つかるかもしれません。

Windows での一般的な問題

互換モードが有効になっていないことを確認してください

Windows 10 にアップグレードすると、一部のアプリで互換モードが自動的にオンになる場合があります。VS Code で互換モードが有効になっていると、ターミナルが使用するエミュレーションを有効にするための低レベルな処理を行うため、ターミナルが動作しなくなります。互換モードは、VS Code 実行可能ファイルを右クリックし、プロパティを選択し、互換性タブでこのプログラムを互換モードで実行するオプションのチェックを外すことで確認および無効にできます。

Windows 10 でターミナルがコード 1 で終了しました(WSL をデフォルトシェルとして使用している場合)

このエラーは、Windows Subsystem for Linux (WSL) が有効なデフォルトの Linux ディストリビューションで設定されていない場合に発生する可能性があります。

注: 「docker-desktop-data」は有効なディストリビューションではありません。

  • PowerShell を開き、wslconfig.exe /lと入力して、WSL が正しくインストールされており、システム内で現在利用可能な Linux ディストリビューションを一覧表示することを確認します。有効なディストリビューションの横に(default)が付いていることを確認します。
  • デフォルトのディストリビューションを変更するには、wslconfig.exe /setdefault "distributionNameAsShownInList"と入力します。

ネイティブ例外が発生しました

通常、このエラーは、アンチウイルスソフトウェアが winpty/conpty コンポーネントがターミナルプロセスを作成するのを傍受してブロックするために発生します。このエラーを回避するには、以下のファイルをアンチウイルススキャンから除外できます。

{install_path}\resources\app\node_modules.asar.unpacked\node-pty\build\Release\winpty.dll
{install_path}\resources\app\node_modules.asar.unpacked\node-pty\build\Release\winpty-agent.exe
{install_path}\resources\app\node_modules.asar.unpacked\node-pty\build\Release\conpty.node
{install_path}\resources\app\node_modules.asar.unpacked\node-pty\build\Release\conpty_console_list.node

この問題をアンチウイルスチームに報告することも、問題全体を根絶するのに役立ちます。

ターミナルがコード 259 で終了しました

終了コード259は、ターミナルが PowerShell.exe などの新しいプロセスを開始しようとしているときにSTILL_ACTIVEを意味する場合があります。いずれかのプログラムがターミナルシェルプロセスをアクティブに保ち、再起動できない場合に備えて、マシン上の未使用のプログラムとプロセスを終了してみてください。

マシンで実行されているアンチウイルスソフトウェアも、ターミナルシェルの起動を妨げる可能性があります。

ターミナルがコード 3221225786 (または類似の) で終了しました

これは、conhost のプロパティで従来のコンソールモードが有効になっている場合に発生する可能性があります。これを変更するには、スタートメニューから cmd.exe を開き、タイトルバーを右クリックしてプロパティに進み、オプションタブで従来のコンソールを使用するのチェックを外します。

Use legacy mode checkbox

次のステップ

© . This site is unofficial and not affiliated with Microsoft.