最初に Visual Studio デバッガーを確認する
このトピックでは、Visual Studio によって提供されるデバッガー ツールについて説明します。 Visual Studio コンテキストでは、アプリ をデバッグ場合、通常はデバッガーがアタッチされた状態 (つまり、デバッガー モード) でアプリケーションを実行していることを意味します。 これを行うと、デバッガーには、実行中のコードの動作を確認するためのさまざまな方法が用意されています。 コードをステップ実行して変数に格納されている値を確認したり、変数にウォッチを設定して値がいつ変化するかを確認したり、コードの実行パスを調べたりすることができます。初めてコードをデバッグしようとした場合は、このトピックを実行する前に、初心者向けのデバッグ を読んでください。 特定のタスクを実行しようとしていて、使用する機能を知る必要がある場合は、「デバッガー機能検索 を参照してください。 AI 支援デバッグを試すには、「Copilot を使用したデバッグを参照してください。
ここで説明する機能は、Visual Studio でサポートされている C#、C++、Visual Basic、JavaScript、およびその他の言語に適用されます (記載されている場合を除く)。
ブレークポイントを設定してデバッガーを起動する
ブレークポイントは、実行時に詳細に調べるコード行またはコードのセクションがわかっている場合に便利な機能です。 条件付きブレークポイントや関数ブレークポイントなど、さまざまな種類のブレークポイントの詳細については、「ブレークポイントの使用」を参照してください。
デバッグするには、アプリ プロセスにアタッチされたデバッガーでアプリを起動する必要があります。 これを行うには:
- 最も一般的な方法 F5 (デバッグ > デバッグ開始) を押します。
ただし、現時点では、アプリコードを調べるためにブレークポイントを設定していない可能性があるため、最初に行ってからデバッグを開始します。 ブレークポイントは、信頼性の高いデバッグの最も基本的で不可欠な機能です。 ブレークポイントは、変数の値やメモリの動作、またはコードの分岐が実行されているかどうかを確認できるように、Visual Studio で実行中のコードを中断する場所を示します。
コード エディターでファイルを開いている場合は、コード行の左側にある余白をクリックしてブレークポイントを設定できます。
を設定する
を設定する
F5 (デバッグ > デバッグの開始) またはデバッグツールバーの デバッグの開始 ボタン を押すと、デバッガーは最初に見つかるブレークポイントまで進みます。 アプリがまだ実行されていない場合、F5 はデバッガーを起動し、最初のブレークポイントで停止します。
ステップ コマンドを使用してデバッガー内のコード内を移動する
ほとんどのコマンドのキーボード ショートカットは、アプリ コードのナビゲーションを迅速に行うためです。 (メニュー コマンドなどの同等のコマンドをかっこで囲んで示します)。ステップ コマンドの使用方法の詳細については、「デバッガー のコード移動する」を参照してください。
アプリをデバッガー付きで起動するには、F11 キーを押します ([デバッグ][ステップ イン] >)。 F11 は ステップ イン コマンドで、アプリの実行を一度に 1 つのステートメントに進めます。 F11 でアプリを起動すると、実行される最初のステートメントでデバッガーが中断されます。
黄色の矢印は、デバッガーが一時停止したステートメントを表し、同じ時点でアプリの実行も中断します (このステートメントはまだ実行されていません)。
F11 は、実行フローを最も詳細に調べるのに適した方法です。 (コードをより速く移動するために、他のオプションも示します)。既定では、デバッガーはユーザー以外のコードをスキップします (詳細については、「マイ コードのみ 参照してください)。
手記
マネージド コードでは、プロパティと演算子を自動的にステップオーバーしたときに通知を受け取るかどうかを確認するダイアログ ボックスが表示されます (既定の動作)。 設定を後で変更する場合、[デバッグ] の下で [ツール] > [オプション] メニューの順に選択し、[プロパティおよび演算子のステップ オーバー] を無効にします。
コードをステップ オーバーして関数をスキップする
関数またはメソッド呼び出しであるコード行を使用している場合は、F11 ではなく F10 (デバッグ > ステップ オーバー) を 押すことができます。
F10 は、アプリ コード内の関数またはメソッドにステップ インすることなくデバッガーを進めます (コードは引き続き実行されます)。 F10 キーを押すと、関心のないコードをスキップできます。 これにより、より関心のあるコードにすばやくアクセスできます。 ステップコマンドの使用方法の詳細については、「デバッガーでコードをナビゲートする 」を参照してください。
マウスでコードの特定の箇所にすばやく移動する
[クリックで実行] ボタンを使用することは、一時的なブレークポイントの設定に似ています。 このコマンドは、アプリ コードの表示領域内をすばやく回避するのにも便利です。 実行を使用して、開いている任意のファイルの をクリックできます。 この機能と同様のナビゲーション機能の詳細については、「コード内の特定の場所に実行する」を参照してください。
デバッガーを使用しているときに、コード行にカーソルを合わせ、[クリックして実行] ボタン ( ここで実行) が表示されるまで待ちます。このボタンは、ボタンが配置されている行まで実行が進むことを示しています。左側に [Visual Studio デバッガーの [クリックして実行] ボタンのスクリーンショット が表示されます。
手記
[クリックで実行] (ここまで実行します) ボタンは Visual Studio 2017 の新機能です。
[クリックで実行] (ここまで実行します) ボタンをクリックします。 デバッガーは、クリックしたコード行に進みます。
現在の関数の終わりまでデバッガーを進める
場合によっては、デバッグ セッションを続行しながら、デバッガーを現在の関数まで進めておく必要がある場合があります。
Shift + F11 を押します (または [デバッグ] > [ステップ アウト])。
このコマンドは、現在の関数が戻るまでアプリの実行を再開 (およびデバッガーを進めます) します。
カーソル行の前まで実行
(デバッガーで一時停止するのではなく) コードを編集する場合は、アプリでコード行を右クリックし、[カーソル に実行] 選択します (または、Ctrl キー + 押しながら F10キー押します)。 このコマンドはデバッグを開始し、現在のコード行に一時的なブレークポイントを設定します。 この機能と同様のナビゲーション機能の詳細については、「コード内の特定の場所に実行する」を参照してください。
ブレークポイントを設定した場合、デバッガーはヒットした最初のブレークポイントで一時停止します。
[カーソル行の前まで実行] を選択したコード行に到達するまで F5 を押します。
このコマンドは、コードを編集していて、一時的なブレークポイントをすばやく設定し、同時にデバッガーを起動する場合に便利です。
手記
デバッグ中、[呼び出し履歴] ウィンドウで [カーソル行の前まで実行] を使用できます。
アプリをすばやく再起動する
再起動 の再起動] ボタンをクリックします (または、Ctrl + Shift + F5 キー押します)。
[再起動]を押すと、アプリを停止してデバッガーを再起動するよりも時間を節約できます。 デバッガーは、コードの実行によってヒットした最初のブレークポイントで一時停止します。
デバッガーを停止してコード エディターに戻る場合は、再起動 ではなく、赤い停止 ボタン押します。
ライブ コード編集
Visual Studio 2022 では、デバッグ中のライブ コード編集がサポートされています。 詳細については、以下を参照してください。
- 実行中のコード の記述とデバッグ
- XAML ホット リロード を使用して実行中の XAML コードを記述およびデバッグする
- 編集と続行
コードを編集してデバッグを続行する (C#、VB、C++、XAML)
Visual Studio でサポートされているほとんどの言語では、デバッグ セッションの途中でコードを編集し、デバッグを続行できます。 この機能を使用するには、デバッガーで一時停止中にカーソルを置いてコードをクリックし、編集を行い、F5 、F10、または F11 を してデバッグを続行します。 この機能の使用方法とその制限についての詳細は、「Edit and Continue」を参照してください。
デバッグ セッション中に XAML コードを変更するには、「XAML ホット リロードを使用して XAML コードを記述およびデバッグする」を参照してください。
データ ヒントを使用して変数を検査する
これで、少しの回避方法がわかったので、デバッガーを使用してアプリの状態 (変数) の検査を開始する良い機会が得られます。 変数を検査できる機能は、デバッガーの最も便利な機能の一部であり、さまざまな方法があります。 多くの場合、問題をデバッグしようとすると、変数が特定のアプリ状態にあると予想される値を格納しているかどうかを調べようとします。 データ ヒントの使用方法の詳細については、「データ ヒントでデータ値を表示する」を参照してください。
デバッガーで一時停止中に、マウスでオブジェクトの上にマウス ポインターを置くと、その値または既定のプロパティ値が表示されます。
を表示する
を表示する
変数にプロパティがある場合は、オブジェクトを展開してすべてのプロパティを表示できます。
多くの場合、デバッグ時には、オブジェクトのプロパティ値をすばやく確認する方法が必要であり、データ ヒントが適切な方法です。
[自動変数] ウィンドウと [ローカル] ウィンドウを使用して変数を検査する
[Autos ウィンドウには、変数とその現在の値および型が表示されます。 自動変数 ウィンドウには、現在の行または前の行で使用されているすべての変数が表示されます (C++ では、ウィンドウには前の 3 行のコード内の変数が表示されます)。言語固有の動作については、ドキュメントを参照してください)。 これらのウィンドウの使用方法の詳細については、「自動変数とローカル]ウィンドウの で変数を検査するを参照してください。
デバッグ中に、コードエディターの下部にある Autos ウィンドウを見てください。
手記
JavaScript では、[ローカル] ウィンドウはサポートされていますが、Autos ウィンドウはサポートされていません。
次に、ローカル ウィンドウを見てください。 ローカル ウィンドウには、現在スコープ内にある変数が表示されます。
この例では、this
オブジェクトとオブジェクト f
がスコープ内にあります。 詳細は、自動ウィンドウおよびローカルウィンドウ で変数を検査するを参照してください。
メソッド呼び出しの戻り値を表示する
.NET および C++ コードでは、メソッド呼び出しのステップ オーバーまたはステップ アウト時に Autos ウィンドウで戻り値を調べることができます。これは、戻り値がローカル変数に格納されていない場合に便利です。 詳細については、「メソッド呼び出しの戻り値を表示するを参照してください。
Visual Studio 2022 バージョン 17.12 Preview 3 以降では、[自動変数] ウィンドウだけでなく、メソッド呼び出しの戻り値をインラインで表示することもできます。
時計を設定する
ウォッチ ウィンドウを使用して、監視する変数 (または式) を指定できます。 詳細については、ウォッチ ウィンドウとクイックウォッチ ウィンドウを使用してウォッチを設定する方法に関するページを参照してください。
デバッグ中にオブジェクトを右クリックし、[ウォッチ の追加]選択します。
この例では、オブジェクトにウォッチ セットがあり、デバッガー内を移動すると、その値の変化を確認できます。 他の変数ウィンドウとは異なり、ウォッチ ウィンドウには、監視している変数が常に表示されます (スコープ外の場合は淡色表示されます)。
呼び出し履歴を調べる
呼び出し履歴 ウィンドウには、メソッドと関数が呼び出される順序が表示されます。 上の行に現在の関数が表示されます。 2 行目は、呼び出された関数またはプロパティなどを示しています。 呼び出し履歴は、アプリの実行フローを調べて理解するのに適した方法です。 詳細については、「方法: 呼び出し履歴のを確認する」を参照してください。
手記
呼び出し履歴 ウィンドウは、Eclipse などの一部の IDE のデバッグパースペクティブに似ています。
デバッグ中に 呼び出し履歴 ウィンドウをクリックします。既定では右下のウィンドウで開きます。
を調べる
コード行をダブルクリックすると、そのソース コードを確認できます。また、デバッガーによって検査されている現在のスコープも変更されます。 この操作でデバッガーが前に進むことはありません。
呼び出し履歴 ウィンドウから右クリック メニューを使用して、他の操作を行うこともできます。 たとえば、特定の関数にブレークポイントを挿入したり、カーソルへの実行を使用してアプリを再起動したり、ソース コードを調べたりすることができます。
例外を検査する
アプリが例外をスローした場合、デバッガーによってその例外をスローしたコード行が示されます。 詳細については、「例外ヘルパー を使用して例外を検査するを参照してください。
この例では、例外ヘルパー に、System.NullReferenceException
例外と、オブジェクト参照がオブジェクトのインスタンスに設定されていないことを示すエラー メッセージが表示されます。 また、Trim
メソッドを呼び出そうとしたときに文字列値が null であったことが示されます。
この例では、例外ヘルパー には、System.Argument
例外と、パスが有効な形式ではないことを示すエラー メッセージが表示されます。 そのため、メソッドまたは関数の引数でエラーが発生したことがわかっています。
この例では、DirectoryInfo
呼び出しで、value
変数に格納されている空の文字列に対してエラーが発生しました。
例外ヘルパーは、エラーのデバッグに役立つ優れた機能です。 また、エラーの詳細を表示したり、例外ヘルパーからウォッチを追加したりすることもできます。 必要に応じて、特定の例外を発生させる条件を変更することも可能です。 コード内の例外を処理する方法の詳細については、「デバッグ手法とツールの」を参照してください。
例外設定 ノードを展開して、この例外の種類を処理する方法に関するその他のオプションを表示しますが、このツアーでは何も変更する必要はありません。
AI のサポートを受ける
Copilotを持っている場合は、デバッグ中に AI の支援を受けることができます。 詳細については、「Copilotを使用したデバッグ」を参照してください。 デバッグ中に、[Copilot に質問する] ボタンの ボタン。 これらのシナリオでは、Copilot は質問のコンテキストを既に認識しているため、Copilot チャットで自分でコンテキストを提供する必要はありません。
デバッグの構成
デバッグまたはリリース構成としてビルドするようにプロジェクトを構成したり、デバッグ用にプロジェクトのプロパティを構成したり、デバッグ 全般設定を構成したりできます。 さらに、デバッガーを構成して、DebuggerDisplay 属性や、C/C++ の場合は NatVis フレームワークなどの機能を使用してカスタム情報を表示できます。
デバッグ プロパティは、各プロジェクトの種類に固有です。 たとえば、起動時にアプリケーションに渡す引数を指定できます。 プロジェクト固有のプロパティにアクセスするには、ソリューション エクスプローラーでプロジェクトを右クリックし、[プロパティ] 選択します。 デバッグプロパティは、通常、特定のプロジェクトの種類に応じて、ビルド または デバッグ タブに表示されます。
Visual Studio 2022 以降では、.NET プロジェクトの デバッグ タブには、デバッグ起動プロファイル UI へのリンクが用意されています。デバッグ関連のプロパティを設定できます。
プロジェクト プロパティ
プロジェクトプロパティ
Azure App Service でライブ ASP.NET アプリをデバッグする
Azure App Service でデバッグするには、「Azure アプリのデバッグ」を参照してください。
Visual Studio Enterprise の場合 (のみ)、スナップショット デバッガー は、目的のコードの実行時に運用環境のアプリのスナップショットを取得します。 スナップショットを取得するようにデバッガーに指示するには、コードでスナップポイントとログポイントを設定します。 デバッガーを使用すると、運用アプリケーションのトラフィックに影響を与えることなく、問題が発生したことを正確に確認できます。 スナップショット デバッガーは、運用環境で発生する問題の解決にかかる時間を大幅に短縮するのに役立ちます。
スナップショット コレクションは、Azure App Service で実行されている ASP.NET アプリケーションで使用できます。 ASP.NET アプリケーションは .NET Framework 4.6.1 以降で実行されている必要があり、ASP.NET Core アプリケーションは Windows 上の .NET Core 2.0 以降で実行されている必要があります。
詳細については、「スナップショット デバッガー 使用してライブ ASP.NET アプリをデバッグする」を参照してください。
IntelliTrace ステップ バックを使用してスナップショットを表示する (Visual Studio Enterprise)
IntelliTrace のステップ バックでは、ブレークポイントとデバッガー ステップ イベントごとにアプリケーションのスナップショットを自動作成します。 記録されたスナップショットを使用すると、以前のブレークポイントまたはステップに戻り、アプリケーションの過去の状態を表示できます。 IntelliTrace のステップ バックを使用すると、前のアプリケーションの状態を確認したいが、デバッグを再開したり、目的のアプリの状態を再作成したりしたくない場合に、時間を節約できます。
[デバッグ] ツールバーの [ステップ バック ワード] ボタンと [ステップ フォワード] ボタン 使用して、スナップショットの移動と表示を行うことができます。 これらのボタンは、[診断ツール] ウィンドウの [イベント] タブに表示されるイベントに移動します。
詳細については、「IntelliTrace を使用して以前のアプリの状態を検査する」ページを参照してください。
パフォーマンスの問題をデバッグする
アプリの実行速度が遅すぎる場合やメモリが多すぎる場合は、早い段階でプロファイリング ツールを使用してアプリをテストすることが必要になる場合があります。 CPU 使用率ツールやメモリ アナライザーなどのプロファイリング ツールの詳細については、「プロファイリング ツールを最初に確認する」を参照してください。
関連コンテンツ
このチュートリアルでは、多くのデバッガー機能について簡単に説明しました。 この機能の1つ、例えばブレークポイントをもっと詳しく見たい場合があります。
ブレークポイント を使用する方法について説明します