この記事では、GitHub Copilot を使用してより効率的にデバッグする方法について説明します。 Copilot は、コードの動作に関する詳細な分析と説明とともに、コード修正を提供できます。 バグに対する修正の提案に役立ち、例外などについて説明します。 Copilot は、コールスタック、フレーム、変数名、および値を理解します。 その結果、デバッガー対応 AI と対話して、コードや一般的なデバッグ問題に関連する詳細な質問をすることができます。
さらに、Copilot は、例外などの一部の対象シナリオや、 デバッグ用の AI 拡張シナリオで説明されているすべてのシナリオに対して、より正確なヘルプを提供します。 これらのシナリオのほとんどで、[Ask Copilot これらのシナリオでは、Copilot は質問のコンテキストをすでに認識しています。
Visual Studio での GitHub Copilot 入力候補の詳細については、「 Visual Studio での GitHub Copilot 入力候補について」を参照してください。
[前提条件]
開始するには、次のものが必要です。
Visual Studio 2022 バージョン 17.8 以降
GitHub アカウント を使用して Copilot アクセス付きの Visual Studio にサインインします
** GitHub Copilot for Freeを使用できます。 サインアップして AI を活用して、より迅速かつ効率的にコーディングします。Visual Studio の GitHub Copilot
Visual Studio の GitHub Copilot Chat
注
拡張機能のインストール後に認証の問題が発生した場合は、「GitHub Copilot Chatでの認証の問題のトラブルシューティング」を参照してください。
Copilot を使用したデバッグ
次の簡単な例は、インライン チャット ビューを使用して AI アシスタンスを取得する方法を示しています。
注
また、 GitHub Copilot Chat > [表示] を選択して、別のチャット ウィンドウを使用してサポートを受けることもできます。 詳細については、「 Visual Studio の GitHub Copilot Chat 拡張機能とは」を参照してください。
デバッグ セッションを開始する
Visual Studio で、新しい C# コンソール アプリを作成します。
スタート ウィンドウで、[新しいプロジェクト
作成] を選択します。 検索ボックスに 「コンソール 」と入力し、言語として [C# ] を選択し、[.NET の コンソール アプリ ] を選択します。 [次へ] を選択します。 ConsoleApp_Copilot のようなプロジェクト名を入力し、[次へ] を選択します。 推奨されるターゲット フレームワークまたは .NET 8 を選択し、次に 、作成を選択します。
.NET 用の コンソール アプリ プロジェクト テンプレートが表示されない場合は、[ツール]>[ツールと機能の取得]に移動すると、Visual Studio インストーラーが開きます。 [.NET デスクトップ開発] ワークロードを選んでから、[変更] を選びます。
Visual Studio によってコンソール プロジェクトが作成され、右側のウィンドウ ソリューション エクスプローラー に表示されます。
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"); } }
次の文を右クリックし、[ ブレークポイント>挿入] を選択します。
int value = Int32.Parse(args[0]);
F5 キーを押すか、デバッグ メニューから デバッグの開始 を選択します。
アプリはブレークポイントで一時停止します。 [自動変数] ウィンドウには、args 変数の値が
string[0]
であることが表示されます。コードを右クリックし、[ Ask Copilot ] を選択してインライン チャット ビューを開きます。
ヒント
または、[自動変数] ウィンドウまたは [ローカル] ウィンドウ、またはデータ ヒントで変数を右クリックし、[ コパイロットに問い合わせる] を選択することもできます。 これにより、Copilot に変数名とコンテキストが提供されるため、チャットで自分でコンテキストを提供する必要はありません。
インラインチャットビューに次の質問を入力します。
Why does the args variable have a value of string[0]?
Enter キーを押すと、Copilot はコードを理解した上で回答を提供します。 (ここに示されているものとは異なる応答が表示される場合があります。
Copilot にコードに対して推奨される修正がある場合は、その修正が表示されます。 そうでない場合は、Copilot にコードの提案を依頼できます。
ヒント
インラインチャットで、「#」記号を使用し、ドロップダウンリストから選択して、質問で参照しながら特定の情報をCopilotに引き継ぎます。 たとえば、コードの一部を選択してから「#」と入力すると、 # ドロップダウン リストからその選択を選択できます。 また、"#" 記号を使用して、ドロップダウン リストに表示される IDE 機能 ([ローカル] ウィンドウなど) を参照することもできます。
この例では、Copilot の回答の最後までスクロールし、インライン チャット ウィンドウの最後にあるフォローアップの質問 "プログラムに引数が渡されないケースをどのように処理できますか" を選択します。
Copilot は、コードに対する推奨される修正を表示します。
コード修正を適用する場合は、[ Accept] (同意する) を選択します。
[キャンセル] を選択すると、次のセクションで Copilot の他の機能について引き続き学習できます。
Copilot で例外をデバッグする
次の簡単な例は、例外が発生したときに AI の支援を受ける方法と、AI が提案する修正に基づいてコードをすばやく更新する方法を示しています。
デバッグ セッションを開始する
同じサンプル アプリを使用してデバッガーで一時停止しているときに、 F11 キーまたは Debug>Step Into キーを押して、現在のステートメントを実行します。
IndexOutOfRangeException
が発生し、アプリが一時停止し、例外が表示されます。例外に対する AI の支援を受けるには、次のセクションに進みます。
AIの支援を求める
例外でアプリケーションを一時停止した状態で、 [Copilot に問い合わせる ] ボタンを選択します。
まだ開いていない場合は、Copilot チャット ウィンドウが表示され、エラーとエラーの発生理由の評価が提供されます。 この例では、Copilot は推奨されるコード修正、コードをコピーするボタン、およびコード修正の プレビュー ボタンを識別します。
例外について質問がある場合は、[副操縦士に質問] テキスト ボックスで質問してください。
プレビュー ボタンを選択します。
Visual Studio に、提案された修正プログラムを含むコード プレビューが表示されます。
提案された修正を確認し、[ 同意する] を選択してコードの提案を適用します。
デバッガーを再起動してください。
今回は、例外は発生しません。 修正されました!
条件付きブレークポイントとトレースポイントで候補を取得
Copilot は、コードに固有の 条件付きブレークポイント と トレースポイント の提案を提供します。
この例では、条件付きブレークポイントの AI 提案を示しています。 トレースポイントの場合、AIアシスタンスも同様に機能します。
現在のブレークポイントを削除するには、ブレークポイントをクリックするか、右クリックして [ブレークポイントの削除]を選択します。
次のコード行を置き換えます。
names.Add("Major Major Major");
これと:
// names.Add("Major Major Major"); foreach (var item in args) { names.Add("Name: " + item); }
names.Add("Name: " + item)
ステートメントの左側で、余白を右クリックし、[条件付きブレークポイントの挿入] を選択します。式フィールドを選択すると、Copilot は候補の処理を開始します。
候補が表示されたら、
item == "John"
などのいずれかを選択します。 名前がFred
になるように提案を編集します。条件式をテストするには:
ソリューション エクスプローラーで ConsoleApp_Copilot プロジェクトを右クリックし、[ プロパティ] を選択します。
[デバッグ] を選択します>一般>デバッグ起動プロファイル UI を開きます。
[Command-line arguments] フィールドに、3 行に分けて
5 Fred Joe
を入力します。デバッガーを再起動してください。
デバッガーがブレークポイントで一時停止したら、
item
の値を確認し、現在の値がFred
であることを確認します。
AIが拡張したシナリオ
Copilot は、コールスタック、フレーム、変数名、および値を理解します。 その結果、デバッガー対応 AI と対話して、コードや一般的なデバッグ問題に関連する詳細な質問をすることができます。
さらに、Copilot は、次の表で説明するような一部の対象シナリオに対して、より正確なヘルプを提供します。
機能またはシナリオ | リンク |
---|---|
例外 | この記事の 「Copilot を使用した例外のデバッグ 」を参照してください。 例外に関するヘルプには、デッドロック検出エラーに関するヘルプが含まれます。 |
変数 | この記事の 「Copilot を使用したデバッグ 」を参照してください。 |
データに関するヒント | 「データに関するヒントで AI のサポートを受ける」を参照してください。 |
条件付きブレークポイントとトレースポイント | この記事の「 条件付きブレークポイントとトレースポイントを使用して候補を取得する 」を参照してください。 |
クイックアクション(電球) | クイックアクションで AI のサポートを受けるを参照してください。 |
IEnumerable 表形式ビジュアライザー | ビジュアライザー式の変更を参照してください。 |
インラインの戻り値 | メソッド呼び出しの戻り値の表示を参照してください。 |
概要スレッドの説明 | 「スレッド ビュー (並列スタック)」を参照してください。 |
プロファイリングのための自動インサイト | 「自動分析情報で AI サポートを受ける」を参照してください。 |
これらのシナリオのほとんどでは、 [ Ask を使用して、的を絞った支援を受けます。 Copilot は、質問のコンテキストをすでに把握しています。 たとえば、現在のコールスタック、問い合わせているコード行、例外の名前(発生した場合)がわかっているため、チャットでコンテキストを自分で提供する必要はありません。 Copilot では、条件付きブレークポイントとトレースポイントの使用に関する提案も提供しています。