次の方法で共有


Visual Studio デバッガーの概要

この記事では、Visual Studioによって提供されるデバッガー ツールについて説明します。 Visual Studioコンテキストでは、アプリを<>デバッグすると、通常はデバッガーがアタッチされた状態 (つまり、デバッガー モード) でアプリケーションを実行していることを意味します。 これを行うと、デバッガーには、実行中のコードの動作を確認するためのさまざまな方法が用意されています。 コードをステップ実行して変数に格納されている値を確認したり、変数にウォッチを設定して値がいつ変化するかを確認したり、コードの実行パスを調べたりすることができます。 デバッグを初めて使用する場合は、この記事を読む前に、 初心者向けのデバッグ をお読みください。 特定のタスクを実行しようとして、使用する機能を知る必要がある場合は、「 デバッガー機能の検索」を参照してください。 AI 支援デバッグを試すには、「Debug with Copilot」を参照してください。

ここで説明する機能は、Visual Studioでサポートされている C#、C++、Visual Basic、JavaScript、およびその他の言語に適用されます (記載されている場合を除く)。

ブレークポイントを設定してデバッガーを起動する

ブレークポイントは、実行時に詳細に調べるコード行またはコードのセクションがわかっている場合に便利な機能です。 条件付きブレークポイントや関数ブレークポイントなど、さまざまな種類のブレークポイントの詳細については、「ブレークポイントの使用」を参照してください。

デバッグするには、アプリ プロセスにアタッチされたデバッガーでアプリを起動する必要があります。 これを行うには:

  • 最も一般的な方法 F5 (デバッグ デバッグ開始) を押します。

アプリ コードを調べるために使用するブレークポイントがまだ設定されていない可能性があります。 ブレークポイントを設定したら、デバッグを開始する準備ができました。 ブレークポイントは、信頼性の高いデバッグの最も基本的で不可欠な機能です。 ブレークポイントは、変数の値やメモリの動作、またはコードの分岐が実行されているかどうかを確認できるように、Visual Studioが実行中のコードを中断する場所を示します。

コード エディターでファイルを開いている場合は、コード行の左側にある余白をクリックしてブレークポイントを設定できます。

ブレークポイントを設定ブレークポイント を設定する

F5 (デバッグ デバッグの開始) またはデバッグツールバーの デバッグの開始 ボタン デバッグの開始デバッグの開始 を押すと、デバッガーは最初に見つかるブレークポイントまで進みます。 アプリがまだ実行されていない場合、F5 はデバッガーを起動し、最初のブレークポイントで停止します。

ライブコード編集

Visual Studio 2022 では、デバッグ中のライブ コード編集がサポートされます。 詳細については、以下を参照してください。

  • 実行中のコード の記述とデバッグ
  • XAML ホット リロード を使用して XAML コードを記述してデバッグします
  • 編集と続行

ほとんどのコマンドのキーボード ショートカットは、アプリ コードのナビゲーションを迅速に行うためです。 (メニュー コマンドなどの同等のコマンドをかっこで囲んで示します)。ステップ コマンドの使用方法の詳細については、「デバッガー のコード移動する」を参照してください。

アプリをデバッガー付きで起動するには、F11 キーを押します ([ステップ イン] )。 F11 は ステップ イン コマンドで、アプリの実行を一度に 1 つのステートメントに進めます。 F11 でアプリを起動すると、実行される最初のステートメントでデバッガーが中断されます。

F11 ステップ インF11 ステップ イン

黄色の矢印は、デバッガーが一時停止したステートメントを表し、同じ時点でアプリの実行も中断します (このステートメントはまだ実行されていません)。

F11 は、実行フローを最も詳細に調べるのに適した方法です。 (コードをより速く移動するために、他のオプションも示します)。既定では、デバッガーはユーザー以外のコードをスキップします (詳細については、「 マイ コードのみ」を参照してください)。

手記

マネージド コードでは、プロパティと演算子を自動的にステップオーバーしたときに通知を受け取るかどうかを確認するダイアログが表示されます (既定の動作)。 後で設定を変更する場合は、[] ウィンドウの [ の [ステップ オーバー] プロパティと [演算子] 設定を無効にします。

手記

マネージド コードでは、プロパティと演算子を自動的にステップオーバーしたときに通知を受け取るかどうかを確認するダイアログが表示されます (既定の動作)。 後で設定を変更する場合は、[デバッグ]の[ツール][オプション]ダイアログ ボックスの[ステップ オーバー プロパティと演算子]設定General を無効にします。

コードをスキップして関数を飛ばす

関数またはメソッド呼び出しであるコード行を使用している場合は、F11 ではなく F10 押すことができます。

F10 は、アプリ コード内の関数またはメソッドにステップ インすることなくデバッガーを進めます (コードは引き続き実行されます)。 F10 キーを押すと、関心のないコードをスキップできます。 これにより、関心のあるコードにすばやくアクセスできます。 ステップコマンドの使用方法の詳細については、「デバッガーでコードをナビゲートする 」を参照してください。

現在の関数を抜けてデバッガーを進める

場合によっては、デバッグ セッションを続行しながら、デバッガーを現在の関数まで進めておく必要がある場合があります。

Shift + F11 を押します (または [デバッグ] [ステップ アウト])。

このコマンドは、現在の関数が戻るまでアプリの実行を再開 (およびデバッガーを進めます) します。

マウスでコードの特定の箇所にすばやく移動する

[クリックで実行] ボタンの使用は、一時的なブレークポイントの設定に似ています。 このコマンドは、アプリ コードの表示領域内をすばやく回避するのにも便利です。 実行を使用して、開いている任意のファイルの をクリックできます。 この機能と同様のナビゲーション機能の詳細については、「コード内の特定の場所に実行する」を参照してください。

デバッガーで、Run to Click (ここで実行) ボタン Visual Studio デバッガーの [クリックして実行] ボタンのスクリーンショットまで、コード行をポイントします。ボタンは、ボタンが配置されている行に対して実行を実行する必要があることを示します。が右側に表示されます。

Visual Studio デバッガーのスクリーンショットで、関数の呼び出しのすぐ右に表示されている [クリックして実行] ボタンを示しています。

デバッガーで、Run to Click (ここで実行) ボタン Visual Studio デバッガーの [クリックして実行] ボタンのスクリーンショットまで、コード行をポイントします。ボタンは、ボタンが配置されている行に対して実行を実行する必要があることを示します。が左側に表示されます。

関数の呼び出しのすぐ左に[クリックして実行]ボタンが表示されているVisual Studioデバッガーのスクリーンショット

手記

Run to Click (ここで実行) ボタンは、Visual Studio 2017 以降で使用できます。

[クリックで実行] (ここまで実行します) ボタンをクリックします。 デバッガーは、クリックしたコード行に進みます。

カーソル行の前まで実行

(デバッガーで一時停止するのではなく) コードを編集する場合は、アプリ内のコード行を右クリックし、[ カーソルまで実行 ] を選択します (または CtrlF10 キーを押します)。 このコマンドはデバッグを開始し、現在のコード行に一時的なブレークポイントを設定します。 この機能と同様のナビゲーション機能の詳細については、「コード内の特定の場所に実行する」を参照してください。

[カーソルまで実行] オプションを示すスクリーンショット。カーソルまで実行

カーソル行の前まで実行カーソル行の前まで実行

ブレークポイントを設定すると、デバッガーはヒットした最初のブレークポイントで一時停止します。

[カーソル行の前まで実行] を選択したコード行に到達するまで F5 を押します。

このコマンドは、コードを編集していて、一時的なブレークポイントをすばやく設定し、同時にデバッガーを起動する場合に便利です。

手記

デバッグ中は、呼び出し履歴 ウィンドウで カーソルまで実行 を使用できます。

アプリをすばやく再起動する

デバッグ ツール バーの [のRestart AppRestart App再起動] ボタンを選択します (または、Ctrl + Shift + F5 キーを押します)。

[再起動]を押すと、アプリを停止してデバッガーを再起動するよりも時間を節約できます。 デバッガーは、コードの実行によってヒットした最初のブレークポイントで一時停止します。

デバッガーを停止してコード エディターに戻る場合は、再起動 ではなく、赤い停止 [デバッグの停止][デバッグの停止] ボタン押します。

データ ヒントを使用して変数を検査する

これで、少しの回避方法がわかったので、デバッガーを使用してアプリの状態 (変数) の検査を開始する良い機会が得られます。 変数を検査できる機能は、デバッガーの最も便利な機能の一部であり、さまざまな方法があります。 多くの場合、問題をデバッグしようとすると、変数が特定のアプリ状態にあると予想される値を格納しているかどうかを調べようとします。 データ ヒントの使用方法の詳細については、「データ ヒントでデータ値を表示する」を参照してください。

デバッガーで一時停止中に、マウスでオブジェクトの上にマウス ポインターを置くと、その値または既定のプロパティ値が表示されます。

データ ヒントを表示するデータ ヒントの を表示する

変数にプロパティがある場合は、オブジェクトを展開してすべてのプロパティを表示できます。

多くの場合、デバッグ時には、オブジェクトのプロパティ値をすばやく確認する方法が必要であり、データ ヒントが適切な方法です。

[自動変数] ウィンドウと [ローカル] ウィンドウを使用して変数を検査する

[Autos ウィンドウには、変数とその現在の値および型が表示されます。 自動変数 ウィンドウには、現在の行または前の行で使用されているすべての変数が表示されます (C++ では、ウィンドウには前の 3 行のコード内の変数が表示されます)。言語固有の動作については、ドキュメントを参照してください)。 これらのウィンドウの使用方法の詳細については、「自動変数とローカル]ウィンドウの で変数を検査するを参照してください。

デバッグ中に、コードエディターの下部にある Autos ウィンドウを見てください。

[自動変数] ウィンドウを示すスクリーンショット。[自動変数] ウィンドウ

[自動変数] ウィンドウ[自動変数] ウィンドウ

手記

JavaScript では、[ローカル] ウィンドウはサポートされていますが、Autos ウィンドウはサポートされていません。

次に、ローカル ウィンドウを見てください。 ローカル ウィンドウには、現在スコープ内にある変数が表示されます。

[ローカル] ウィンドウを示すスクリーンショット。[ローカル] ウィンドウ

ローカル ウィンドウローカル ウィンドウ

この例では、 オブジェクトとオブジェクト がスコープ内にあります。 詳細については、「自動ウィンドウおよびローカルウィンドウで変数を検査する」を参照してください。

時計を設定する

ウォッチ ウィンドウを使用して、監視する変数 (または式) を指定できます。 詳細については、「 Watch と QuickWatch Windowsを参照してください。

デバッグ中にオブジェクトを右クリックし、[ウォッチ の追加]選択します。

ウォッチ ウィンドウを示すスクリーンショット。

ウォッチ ウィンドウウォッチ ウィンドウ

この例では、オブジェクトにウォッチ セットがあり、デバッガー内を移動すると、その値の変化を確認できます。 他の変数ウィンドウとは異なり、[ ウォッチ ] ウィンドウには、監視している変数が常に表示されます (スコープ外の場合は淡色表示されます)。

呼び出し履歴を調べる

呼び出し履歴 ウィンドウには、メソッドと関数が呼び出される順序が表示されます。 上の行に現在の関数が表示されます。 2 行目は、呼び出された関数またはプロパティなどを示しています。 呼び出し履歴は、アプリの実行フローを調べて理解するのに適した方法です。 詳細については、「方法: 呼び出し履歴のを確認する」を参照してください。

手記

呼び出し履歴 ウィンドウは、Eclipse などの一部の IDE のデバッグパースペクティブに似ています。

デバッグ中に [ 呼び出し履歴] ウィンドウを選択します。既定では右下のウィンドウで開きます。

[呼び出し履歴] ウィンドウを示すスクリーンショット。呼び出し履歴を調べる

呼び出し履歴を調べる呼び出し履歴を調べる

コード行をダブルクリックすると、そのソース コードを確認できます。また、デバッガーによって検査されている現在のスコープも変更されます。 これにより、デバッガーが進むことはありません。

呼び出し履歴 ウィンドウから右クリック メニューを使用して、他の操作を行うこともできます。 たとえば、特定の関数にブレークポイントを挿入したり、カーソルへの実行を使用してアプリを再起動したり、ソース コードを調べたりすることができます。

例外を検査する

アプリが例外をスローした場合、その例外をスローしたコード行がデバッガーで示されます。 詳細については、「例外ヘルパー を使用して例外を検査するを参照してください。

例外ヘルパー例外ヘルパー

この例では、 例外ヘルパー によって、 例外と、オブジェクト参照がオブジェクトのインスタンスに設定されていないことを示すエラー メッセージが表示されます。 また、 メソッドを呼び出そうとしたときに文字列値が null であったことが示されます。

例外ヘルパーは、エラーのデバッグに役立つ優れた機能です。 また、エラーの詳細を表示したり、例外ヘルパーからウォッチを追加したりすることもできます。 必要に応じて、特定の例外を発生させる条件を変更することも可能です。 コード内の例外を処理する方法の詳細については、「デバッグ手法とツールの」を参照してください。

例外設定 ノードを展開して、この例外の種類を処理する方法に関するその他のオプションを表示しますが、このツアーでは何も変更する必要はありません。

ヒント

Copilotがある場合は、例外のデバッグ中に AI の支援を受けることができます。 ただCopilotで分析Copilotで分析ボタンのスクリーンショットボタンを探してください。 詳細については、「Debug with Copilot」を参照してください。

ヒント

Copilotがある場合は、例外のデバッグ中に AI の支援を受けることができます。 Ask CopilotAsk Copilot ボタンのスクリーンショット。 ボタンを探します。 詳細については、「Debug with Copilot」を参照してください。

AI のサポートを受ける

Copilotがある場合は、デバッグ中に AI の支援を受けることができます。 詳細については、「Debug with Copilot」を参照してください。 デバッグ中に、Analyze with Copilot ボタンを探すこともできます「Analyze with Copilot」ボタンのスクリーンショット。 これらのシナリオでは、Copilotは質問のコンテキストを既に認識しているため、Copilotチャットでコンテキストを自分で指定する必要はありません。

AI のサポートを受ける

Copilotがある場合は、デバッグ中に AI の支援を受けることができます。 詳細については、「Debug with Copilot」を参照してください。 デバッグ中に、Ask CopilotAsk Copilot button. ボタンのスクリーンショットを探すこともできます。 これらのシナリオでは、Copilotは質問のコンテキストを既に認識しているため、Copilotチャットでコンテキストを自分で指定する必要はありません。

デバッグの構成

デバッグまたはリリース構成としてビルドするようにプロジェクトを構成したり、デバッグ用にプロジェクトのプロパティを構成したり、デバッグ 全般設定を構成したりできます。 さらに、デバッガーを構成して、DebuggerDisplay 属性や、C/C++ の場合は NatVis フレームワークなどの機能を使用してカスタム情報を表示できます。

デバッグ プロパティは、各プロジェクトの種類に固有です。 たとえば、起動時にアプリケーションに渡す引数を指定できます。 プロジェクト固有のプロパティにアクセスするには、ソリューション エクスプローラーでプロジェクトを右クリックし、 Propertiesを選択します。 デバッグプロパティは、通常、特定のプロジェクトの種類に応じて、ビルド または デバッグ タブに表示されます。

Visual Studio 2022 以降、.NET プロジェクトの Debug タブには、デバッグ関連のプロパティを設定できるデバッグ起動プロファイル UI へのリンクが用意されています。

プロジェクトのプロパティを示すスクリーンショット。プロジェクトのプロパティ

Visual Studio 2022 以降、.NET プロジェクトの Debug タブには、デバッグ関連のプロパティを設定できるデバッグ起動プロファイル UI へのリンクが用意されています。

プロジェクト プロパティ プロジェクト プロパティ

Azure App Service でライブ ASP.NET アプリをデバッグする

Azure App Serviceでデバッグするには、「Debug Azure apps」を参照>。

Visual Studio Enterprise (のみ) の場合、Snapshot Debugger は、目的のコードの実行時に、運用中のアプリのスナップショットを取得します。 スナップショットを取得するようにデバッガーに指示するには、コードでスナップポイントとログポイントを設定します。 デバッガーを使用すると、運用アプリケーションのトラフィックに影響を与えることなく、問題が発生したことを正確に確認できます。 スナップショット デバッガーは、運用環境で発生する問題の解決にかかる時間を大幅に短縮するのに役立ちます。

スナップショット コレクションは、Azure App Serviceで実行されている ASP.NET アプリケーションで使用できます。 ASP.NET アプリケーションは .NET Framework 4.6.1 以降で実行されている必要があり、ASP.NET Core アプリケーションは Windows .NET Core 2.0 以降で実行されている必要があります。

詳細については、スナップショット デバッガーを使用した Debug ライブ ASP.NET アプリを参照してください。

IntelliTrace ステップ バックを使用してスナップショットを表示する (Visual Studio Enterprise)

IntelliTrace のステップ バックでは、ブレークポイントとデバッガー ステップ イベントごとにアプリケーションのスナップショットを自動作成します。 記録されたスナップショットを使用すると、以前のブレークポイントまたはステップに戻り、アプリケーションの過去の状態を表示できます。 IntelliTrace のステップ バックを使用すると、前のアプリケーションの状態を確認したいが、デバッグを再開したり、目的のアプリの状態を再作成したりしたくない場合に、時間を節約できます。

[デバッグ] ツールバーの [ステップ バック ワード] ボタンと [ステップ フォワード] ボタン 使用して、スナップショットの移動と表示を行うことができます。 これらのボタンは、[診断ツール] ウィンドウの [イベント] タブに表示されるイベントに移動します。

詳細については、「IntelliTrace を使用して以前のアプリの状態を検査する」ページを参照してください。

パフォーマンスの問題をデバッグする

アプリの実行速度が遅すぎる場合やメモリが多すぎる場合は、早い段階でプロファイリング ツールを使用してアプリをテストすることが必要になる場合があります。 CPU 使用率ツールやメモリ アナライザーなどのプロファイリング ツールの詳細については、「プロファイリング ツールを最初に確認する」を参照してください。

このチュートリアルでは、多くのデバッガー機能について簡単に説明しました。 あなたは、ブレークポイントなど、これらの機能のうちの 1 つをさらに詳しく見てみたいと思うかもしれません。

ブレークポイント を使用する方法について説明します