【Visual Studio C# デバッグ入門 】ブレークポイントの使い方を徹底解説

本ブログでは初学者向けに、ブレークポイントの設定方法について紹介します。

ブレークポイントの設定には様々な方法が有り、使用場面に合わせて適切な方法を使用する事で効率的なデバッグが可能となります。

※デバッグ時はDebugモードで実行して下さい。
※Visual Studio 2020 Version 17.14.2 を使用

ブレークポイントの基本設定

特定の行で必ず停止したい場合

この行が実行される都度 必ず停止する設定。(が表示される)

  • 用途例
    • プログラムがどのように実行されるか、1行ずつ確認したい
    • その時点での変数やオブジェクトの内容を確認したい
    • 決まった場所で発生する例外直前の状態を観察したい 等 ext. 
  • 設定手順
    • 行の左側をクリックするかF9を押下

条件付きブレークポイント

特定の条件に合致した場合にのみ停止

「特定の条件のときだけ止めたい」という場合は、条件付きブレークポイントが便利。

  • 用途例
    • ループ中、○○回目でブレークしたい
    • エラーが起きそうな特定の入力のときだけ確認したい 等 etc.
  • 設定手順
    • ブレーポイントを設定後、「設定」をクリック
      ※ブレークポイントの赤丸にカーソルを合わせると、「設定」「無効にする」が表示される
    • 「条件」をチェックし「例:x==5」の欄に「i==50」を入力して条件を確定させる
  • 条件の設定
  • ブレークポイントの形が「条件付き」の形になる

ヒットカウント付きブレークポイント

ループ処理等で停止条件を複数指定できる

通常のブレークポイントは「毎回」停止しますがヒットカウント付きにすると、

  • 10回目だけ止める
  • 50回目以降は毎回止める
  • 3回目ごとに止める

といった制御が可能になる。

  • 用途例
    • 大量ループの内、○○○○番目だけを停止したい
    • 「3回目に必ず失敗する」など特定パターンを再現するために使う
    • 同じ関数が複数回呼ばれるケースで、5回目だけ調査したい  等 etc.
  • 設定手順
    • 「条件」をチェックし「ヒットカウント」を選択
    • ①の条件を選択
    • ② ①の条件に対応する数値を入力

アクション付きブレークポイント

プログラムを停止しないで出力ウィンドウにメッセージを表示

「アクション付きブレークポイント」は「ログ代わり」として活用できます。Console.WriteLine を入れずに確認したいときや、デバッグ中に処理を止めたくない場合に有効。

  • 用途例
    • 毎回止めずに変数の状態ログを取りたい
    • ソースコードを書き換えずに、一時的にログを仕込んで調査したい場合
    • 再現の難しいバグに対して、処理フローや変数値の流れを記録したい 等 etc.
  • 設定手順
    • ブレークポイント設定後  → 「設定」でアクションをチェック
    • メッセージ表示欄に表示したいメッセージを入力
    • コード実行のチェックは外さない(外すと実行が停止する)
    • 「閉じる」をクリックして確定

一度ヒットしたブレークポイントの無効化

ブレークポイントが一度だけ発動したら自動で無効化

最初の一度だけブレークし2回目以降はブレークしない機能。

  • 主な用途
    • 初回だけ変数や状態を確認したい
    • テストデータの初回通過時だけ追いたい
    • 再現性のあるバグに対して初回のみの挙動に注目して調査したい 等 etc.
  • 設定手順
    • ブレークポイント設定後  → 「設定」で「一度ヒットしたブレークポイントを無効にする」をチェック
    • 「閉じる」をクリックして確定

他のブレークポイントにヒットした場合のみ停止

他の指定したブレークポイントで停止したら有効となる

これは、指定した「別のブレークポイント(A)」が先にヒットした場合に限って、現在のブレークポイント(B)を有効にするという設定。

  • 用途例
    • ある関数を経由して別の処理が呼ばれたときだけ調べたい
    • 複数の経路から呼ばれる共通処理で、特定経路のみ追いたい
    • 特定の分岐を通ったあとの挙動だけ調査したい 等 etc.
  • 設定手順
    • 別のブレークポイント(A)を設定
    • Aで停止した後で停止したいコードにブレークポイントを設定
    • 「設定」で「次のブレークポイントにヒットした場合のみ有効にします」をチェック
    • 次のブレークポイントにAを選択
    • 「閉じる」をクリックして確定

関数ブレークポイント

指定した関数名の関数が呼び出されたら停止

関数名を指定してその関数に入ったときにブレークする機能。コード上で場所を探す必要がなく、対象関数の呼び出しを瞬時に捕まえることができる。

  • 用途例
    • 呼び出し元が不明な関数を調べたい
    • オーバーロード関数の特定引数を追いたい
    • コードのリファクタリング時の影響調査 等 etc.
  • 設定手順
    • メニュー「デバック」→「ウィンドウ」→「ブレークポイント」でブレークポイントウィンドウを表示
    • メニュー「デバック」→「ブレークポイントの作成」→「関数のブレークポイント」
    • 表示された入力ボックスに「関数名」やブレーク条件を入力して「OK」
      → 「ブレークポイントウィンド」に関数名が表示される
  • 関数のブレークポイント指定画面を表示
  • ブレークする関数名とブレークの条件を指定
  • ブレークポイントウィンドウに「ブレーク関数名称」とブレーク条件が表示される

ブレークポイントの無効化/有効化

ブレークポイントを一時無効にして再度有効にする

一時的にブレークポイントの動作をオン/オフできる便利なデバッグ機能。

  • 用途例
    • 複数のブレークポイントを切り替えて検証したい
    • デバッグの条件ごとに無効化したり有効にしたい 等 etc.
  • 設定手順
    • マウスをブレークポイントの赤丸に合わせ「無効にする」を選択
      → ブレークポイントが「無効」の形になり、条件が合致しても停止しなくなる
    • 再度有効にしたい場合は、ブレークポイントにポインタを合わせ「有効にする」を選択
  • ブレークポイントが「無効」の形になる
  • 有効にする

タイトルとURLをコピーしました