Visual Studio で GitHub Copilot を使ってアプリをデバッグする

この記事では、GitHub Copilot を使用し、より効率的にデバッグする方法について説明します。 Copilot では、コードの修正と仕組みの詳細な分析と説明を提供できます。 バグに対して提案された修正に役立ち、例外などの説明を行います。 Copilot は、呼び出し履歴、フレーム、変数名、および値を理解します。 その結果、デバッガー対応の AI と対話して、コードやデバッグの一般的な問題に関連する詳細な質問をすることができます。

さらに、Copilot では、次のようないくつかの対象シナリオに対して、より正確なヘルプを提供します。

  • 例外
  • 変数
  • デッドロック
  • CPU 使用率の自動分析情報

これらのシナリオでデバッグしている間に AI の支援を受けるには、[Copilot に質問する] [Copilot に質問する] ボタンのスクリーンショット。 ボタンを探します。 これらのシナリオでは、Copilot は質問のコンテキストを既に認識しています。 たとえば、現在の呼び出し履歴、質問対象のコード行、例外の名前 (発生した場合) を把握しているので、コンテキストをチャットに入力する必要はありません。 Copilot には、条件付きブレークポイントとトレースポイントの使用に関する提案も提供されています。

Visual Studio での GitHub Copilot Completions の詳細については、「Visual Studio での GitHub Copilot Completions について」を参照してください。

前提条件

開始するには、以下が必要です。

アプリをデバッグするために AI の支援を受ける

次の簡単な例は、インライン チャット ビューを使用して AI 支援を受ける方法について示しています。

Note

[GitHub Copilot チャット>表示] を選択して、別のチャット ウィンドウを使用してヘルプを表示することもできます。 詳細については、「Visual Studio の GitHub Copilot チャット拡張機能とは」を参照してください。

デバッグ セッションを開始する

  1. Visual Studio で、新しい C# コンソール アプリを作成します。

    スタート ウィンドウで、 [新しいプロジェクトの作成] を選択します。 検索ボックスに「コンソール」と入力し、言語として C# を選択してから、.Net 用の [コンソール アプリ] を選択します。 [次へ] を選択します。 「ConsoleApp_Copilot」などのプロジェクト名を入力して、[次へ] を選択します。

    推奨されるターゲット フレームワーク、または .NET 8 を選択し、[作成] を選択します。

    .NET 用の [コンソール アプリ] プロジェクト テンプレートが表示されない場合は、[ツール]>[ツールと機能を取得] に移動して、Visual Studio インストーラーを開きます。 [.NET デスクトップ開発] ワークロードを選択し、[変更] を選びます。

    Visual Studio によってコンソール プロジェクトが作成され、ソリューション エクスプローラーの右側のウィンドウに表示されます。

  2. Program.cs のコードを次のコードに置き換えます。

    using System;
    using System.Collections.Generic;
    
    public class Example
    {
        public static void Main(string[] args)
        {
            int value = Int32.Parse(args[0]);
            List<String> names = null;
            if (value > 0)
                names = new List<String>();
    
            names.Add("Major Major Major");
        }
    }
    
  3. 次のステートメントを右クリックし、[ブレークポイント]>[ブレークポイントの挿入] を選択します。

    int value = Int32.Parse(args[0]);
    
  4. F5 キーを押すか、[デバッグ] メニューから [デバッグの開始] を選択します。

    アプリはブレークポイントで一時停止します。 Autos ウィンドウには、args 変数の値が string[0] と表示されます。

    Autos ウィンドウのスクリーンショット。

  5. コードを右クリックし、[Copilot に質問する] を選択してインライン チャット ビューを開きます。

    ヒント

    または、[自動] ウィンドウか [ローカル] ウィンドウ、またはデータのヒントで変数を右クリックし、[Copilot に質問する] を選択します。 これにより、Copilot に変数名とコンテキストが提供されるため、チャットでコンテキストを自分で指定する必要はありません。

  6. インライン チャット ビューに次の質問を入力します。

    Why does the args variable have a value of string[0]?
    

    インライン Copilot チャットのスクリーンショット。

    Enter キーを押すと、Copilot はコードの解釈に基づいて回答します。 (ここに表示されているものとは異なる回答が返される場合があります。)

    Copilot が回答した質問のスクリーンショット。

    Copilot からコードの修正候補がある場合は表示されます。 そうでない場合は、Copilot にコードの提案を依頼できます。

    ヒント

    インライン チャットで、「#」 記号を使用し、ドロップダウン リストから選択して、質問内で特定の情報を Copilot に渡します。 たとえば、コードの一部を選択し、「#」と入力すると、# ドロップダウン リストからその選択を選択できます。 「#」 記号を使用して、[ローカル] ウィンドウなどのドロップダウン リストに表示される IDE 機能を参照することもできます。

  7. この例では、Copilot の回答の最後までスクロールし、インライン チャット ウィンドウの最後にあるフォローアップの質問を選択します。「引数がプログラムに渡されない場合に対処するにはどうすればよいですか?」

    Copilot がフォローアップした質問のスクリーンショット。

    Copilot には、コードの修正候補が表示されます。

    Copilot が提案した修正のスクリーンショット。

    コードの修正を適用する場合は、[承諾] を選択します。

  8. 次のセクションで [キャンセル] を選択すると、Copilot の他の機能を引き続き学習できます。

例外について AI 支援を受ける

次の簡単な例は、例外が発生したときに AI 支援を受ける方法と、AI によって提案された修正に基づいてコードを迅速に更新する方法を示しています。

デバッグ セッションを開始する

  • 同じサンプル アプリを使用してデバッガーで一時停止中に、[F11] キーまたは [デバッグ]> [ステップ イン] キーを押して現在のステートメントを実行します。

    IndexOutOfRangeException が発生してアプリが一時停止し、例外が表示されます。

    例外について AI 支援を受けるには、次のセクションに進みます。

AI 支援を求める

  1. アプリケーションが例外で一時停止したら、[Copilot に質問する] ボタンを選択します。

    例外での [Copilot に質問する] ボタンのスクリーンショット。

    まだ開いていない場合は、Copilot Chat ウィンドウが表示され、エラーの評価とその発生理由が提供されます。 この例では、Copilot は、コード修正のためのコード修正候補、コードをコピーするボタン、[プレビュー] ボタンを識別します。

    例外について疑問がある場合は、[Copilot に質問する] テキスト ボックスで質問します。

  2. プレビュー ボタンを選択します。

    [Copilot チャット] ウィンドウの [プレビュー] ボタンのスクリーンショット。

    Visual Studio に、修正候補を含むコード レビューが表示されます。

  3. 修正候補を確認し、[承認] を選択し、そのコード候補を適用します。

    Visual Studio のコード プレビューのスクリーンショット。

  4. デバッガーを再起動してください。

    今度は、例外は発生しません。 修正されました。

条件付きブレークポイントとトレースポイントに関する AI の支援を受ける

Copilot には、コードに固有の 条件付きブレークポイントトレースポイント の候補が表示されます。

この例では、条件付きブレークポイントに対する AI の提案を示します。 トレースポイントの場合、AI アシスタンスも同じように機能します。

  1. 現在のブレークポイントをクリックして削除するか、右クリックして [ブレークポイントの削除] を選択します。

  2. 次のコード行を置き換えます。

    names.Add("Major Major Major");
    

    以下に置き換えます。

    // names.Add("Major Major Major");
    foreach (var item in args)
    {
       names.Add("Name: " + item);
    }
    
  3. names.Add("Name: " + item) ステートメントの左側にある余白を右クリックし、[条件付きブレークポイントの挿入] を選択 します。

  4. 式フィールドを選択すると、候補の処理が開始されます。

    条件付きブレークポイントの候補に対して動作する Copilot のスクリーンショット。

  5. 候補が表示されたら、item == "John" などを選択します。 名前 が Fred になるように修正候補を編集します。

    条件付きブレークポイントの Copilot 候補のスクリーンショット。

  6. 条件式をテストするには:

    1. ソリューション エクスプローラーで ConsoleApp_Copilot プロジェクトを右クリックし、[プロパティ] を選択します。

    2. デバッグ」>「一般」>「デバッグ起動プロファイル UI を開く」を選択します。

    3. コマンドライン引数」フィールドに、「5 Fred Joe」を 3 行に分けて入力します。

      プロジェクトのコマンド ライン引数を入力するスクリーンショット。

    4. デバッガーを再起動してください。

    デバッガがブレークポイントで一時停止したら、item の値をチェックし、現在の値がFred であることを確認します。

IEnumerable テーブル ビジュアライザーで AI のサポートを受ける

IEnumerable 表形式ビジュアライザーの AI 支援については、「 ビジュアライザー式を変更するを参照してください。

自動分析情報について AI 支援を受ける

Copilot は、対話形式によるデバッグ支援に加えて、CPU 使用率の自動分析情報で詳細な情報を提供します。 特定のパフォーマンス分析情報のセットに関連する情報と分析情報を提供します。 Copilot を使用して、コード内の特定されたホット パスの関数について質問します。これは、より効率的でコスト効率の高いコードを生成するのに役立つ場合があります。

特定のパフォーマンス分析情報が特定されていない場合でも、[Copilot に質問する] ボタンが表示されます。 [Copilot に質問する] を選択して Copilot から学習し、質問を開始します。

CPU 使用率で Copilot を使用するアニメーション。