ブレークポイントは、開発者のツールボックスで最も重要なデバッグ手法の 1 つです。 デバッガーの実行を一時停止する場所にブレークポイントを設定します。 たとえば、コード変数の状態を確認したり、特定のブレークポイントで呼び出し履歴を確認したりできます。
ソース コードでブレークポイントを設定する
任意の実行可能コード行にブレークポイントを設定できます。 たとえば、単純なループを作成するこの単純な C# コードを見てみましょう。
int testInt = 3;
for (int i = 0; i < 10; i++)
{
testInt += i;
}
変数の代入 (int testInt = 3
)、 for
ループ、または for
ループ内の任意のコードを使用して、コード行にブレークポイントを設定できます。 割り当てがなく、getter/setter がない場合は、メソッドシグネチャ、名前空間またはクラスの宣言、変数宣言にブレークポイントを設定することはできません。
ソース コードでブレークポイントを設定するには:
- コード行の横にある左端の余白をクリックします。 また、行を選択して F9 キーを押し、[デバッグ]、[ブレークポイント>ブレークポイントの設定]、または右クリックして [ブレークポイント>ブレークポイントを挿入] を選択することもできます。 ブレークポイントは、左余白に赤い点として表示されます。
ほとんどの言語 (C# を含む) では、Visual Studio によってブレークポイントと現在の実行行が自動的に強調表示されます。 既定で強調表示されていない C++ などの一部の言語では、 ブレークポイント と現在の行の強調表示を有効にするには、ツール (または デバッグ) >Options>Debugging>ブレークポイントと現在のステートメントのソース行全体を強調表示する (C++ のみ) を選択します。
デバッグするには、 F5 キーを押すか、 デバッグ>デバッグの開始を選択します。
デバッグすると、その行のコードが実行される前に、ブレークポイントで実行が一時停止します。 ブレークポイントの記号に黄色の矢印が表示されます。
次の例のブレークポイントでは、 testInt
の値はまだ 3 です。 そのため、黄色のステートメントがまだ実行されていないため、変数が初期化されてから値は変更されていません (値 3 に設定)。
次の例のブレークポイントでは、 testInt
の値はまだ 1 です。 そのため、黄色のステートメントがまだ実行されていないため、変数が初期化されてから値は変更されていません (値 1 に設定)。
デバッガーがブレークポイントで停止すると、 変数値 や 呼び出し履歴など、アプリの現在の状態を確認できます。
たとえば、次の図では、データ ヒントと testInt
ウィンドウでの値を確認できます。
ブレークポイントを操作するための一般的な手順をいくつか次に示します。
ブレークポイントはトグルです。 クリックするか、F9 キーを押すか、デバッグ>を使用してブレークポイントを削除または再挿入できます。
ブレークポイントを削除せずに無効にするには、ブレークポイントをポイントするか右クリックし、[ ブレークポイントを無効にする] を選択します。 無効にされたブレークポイントは、左側の余白または [ブレークポイント ] ウィンドウに空のドットとして表示されます。 ブレークポイントを再度有効にするには、ブレークポイントをポイントするか右クリックし、[ ブレークポイントを有効にする] を選択します。
条件とアクションの設定、ラベルの追加と編集、ブレークポイントのエクスポートを行う場合は、ブレークポイントを右クリックして適切なコマンドを選択するか、その上にマウス ポインターを移動して [設定] アイコンを選択します。
ブレークポイントの種類
Visual Studio では、さまざまな種類のブレークポイントがサポートされ、指定された条件に基づいてのみアクティブ化される条件付きブレークポイントなど、さまざまなデバッグ シナリオがサポートされます。 詳細については、「適切な種類のブレークポイントを使用する」を参照してください。
[ブレークポイント] ウィンドウでブレークポイントを管理する
[ ブレークポイント ] ウィンドウを使用して、ソリューション内のすべてのブレークポイントを表示および管理できます。 この一元化された場所は、大規模なソリューションや、ブレークポイントが重要な複雑なデバッグ シナリオで特に役立ちます。
[ブレークポイント] ウィンドウでは、ブレークポイント の 検索、並べ替え、フィルター処理、有効化/無効化、または削除を行うことができます。 条件とアクションを設定したり、新しい関数やデータ ブレークポイントを追加したりすることもできます。
[ブレークポイント] ウィンドウを開くには、デバッグ>Windows>Breakpoints を選択するか、Ctrl++キーを押します。
[ブレークポイント] ウィンドウに表示する列を選択するには、[列の表示] を選択します。 列ヘッダーを選択して、ブレークポイントの一覧をその列で並べ替えます。
ブレークポイント ラベル
ラベルを使用すると、[ ブレークポイント] ウィンドウ でブレークポイントの一覧を並べ替えたりフィルター処理したりできます。
- ブレークポイントにラベルを追加するには、ソース コードまたは [ブレークポイント ] ウィンドウで ブレークポイントを右クリックし、[ ラベルの編集] を選択します。 新しいラベルを追加するか、既存のラベルを選択して、[ OK] を選択します。
- [ブレークポイント ] ウィンドウで [ ラベル]、[ 条件]、またはその他の列ヘッダーを選択して、ブレークポイントの一覧を並べ替えます。 ツールバーの [列の表示] を選択すると、表示する 列 を選択できます。
ブレークポイント グループ
複雑なデバッグ シナリオの場合は、ブレークポイント グループを作成してブレークポイントを整理することができます。 これにより、デバッグしようとしている現在のシナリオに基づいて、ブレークポイントの論理グループをすばやく有効または無効にすることができます。
[ ブレークポイント ] ウィンドウでブレークポイントを作成するには、[ 新しい > ブレークポイント グループ] を選択し、グループの名前を指定します。 ブレークポイントをグループに追加するには、ブレークポイントを右クリックし、[ブレークポイント グループに追加] ><グループ名>を選択します。 または、ブレークポイントを目的のグループにドラッグ アンド ドロップします。
既定のブレークポイント グループを設定するには、グループを右クリックし、[ 既定のブレークポイント グループとして設定] を選択します。 既定のブレークポイント グループを設定すると、新しく作成されたブレークポイントが自動的にグループに追加されます。
ブレークポイントのエクスポートとインポート
ブレークポイントの状態と場所を保存または共有するには、ブレークポイントをエクスポートまたはインポートします。
Visual Studio 2022 バージョン 17.12 Preview 3 以降では、ブレークポイント グループもエクスポートおよびインポートされたブレークポイントに含まれます。
- 1 つのブレークポイントを XML ファイルにエクスポートするには、ソース コードまたは [ ブレークポイント] ウィンドウでブレークポイントを右クリックし、[ エクスポート] または [エクスポート] を 選択します。 エクスポート場所を選択し、[ 保存] を選択します。 既定の場所はソリューション フォルダーです。
- 複数のブレークポイントをエクスポートするには、[ ブレークポイント ] ウィンドウでブレークポイントの横にあるボックスを選択するか、[ 検索 ] フィールドに検索条件を入力します。 [現在の検索条件に一致するすべてのブレークポイントをエクスポート] アイコンを選択し、ファイルを保存します。
- すべてのブレークポイントをエクスポートするには、すべてのボックスの選択を解除し、[ 検索 ] フィールドを空白のままにします。 [現在の検索条件に一致するすべてのブレークポイントをエクスポート] アイコンを選択し、ファイルを保存します。
- ブレークポイントをインポートするには、[ ブレークポイント ] ウィンドウで[ ファイルからブレークポイントをインポート する] アイコンを選択し、XML ファイルの場所に移動して、[ 開く] を選択します。
デバッガー ウィンドウからブレークポイントを設定する
[呼び出し履歴] ウィンドウと [逆アセンブル] デバッガー ウィンドウからブレークポイントを設定することもできます。
[呼び出し履歴] ウィンドウにブレークポイントを設定する
呼び出し元の関数が返す命令または行で中断するには、[ 呼び出し履歴 ] ウィンドウにブレークポイントを設定します。
[呼び出し履歴] ウィンドウでブレークポイントを設定するには:
[呼び出し履歴] ウィンドウを開くには、デバッグ中に一時停止する必要があります。 [デバッグ>Windows>Call Stack] を選択するか、Ctrl+Alt+C キーを押します。
[呼び出し履歴] ウィンドウで、呼び出し元の関数を右クリックし、ブレークポイント>ブレークポイントの挿入を選択するか、F9 キーを押します。
コールスタックの左の余白の関数呼び出し名の横にブレークポイント記号が表示されます。
呼び出し履歴のブレークポイントがアドレスとして [ ブレークポイント ] ウィンドウに表示され、関数内の次の実行可能な命令に対応するメモリの場所が表示されます。
デバッガーは命令で中断します。
呼び出し履歴の詳細については、「 方法: 呼び出し履歴ウィンドウを使用する」を参照してください。
コードの実行中にブレークポイントを視覚的にトレースするには、「 デバッグ中に呼び出し履歴のメソッドをマップする」を参照してください。
[逆アセンブル] ウィンドウにブレークポイントを設定する
[逆アセンブル] ウィンドウを開くには、デバッグ中に一時停止する必要があります。 [デバッグ>ウィンドウズ>逆アセンブル] を選択するか、Ctrl+Alt+Dキーを押します。
[ 逆アセンブル ] ウィンドウで、中断する命令の左余白をクリックします。 これを選択して F9 キーを押すか、右クリックして [ ブレークポイント>ブレークポイントの挿入] を選択することもできます。