はじめに
意外と知られていないのが、条件付きブレークポイントの作り方です。まずは、10回クリックしたらブレークする方法を紹介します。この記事ではVisual Basic .NETを元に解説していますが、VB/C#ともほぼ同じ操作になっています。
必要な環境
Visual Studio .NET 2002 / 2003
対象読者
Visual Studio .NETを使用している開発者。
ヒットカウントによるブレークポイント
手順は簡単です。
- 適当なフォームに
Button
コントロールを貼り付け、そのコントロールをダブルクリックします。 - 恐らく、新規作成の手順で行えば、
Button1_Click
というイベントが追加されましたね(C#はbutton1_Click
)。 - 関数に「
Button1_Click
」と入力されているのが、確認できたら、[ヒット カウント]をクリックしてください。[ブレークポイントのヒット カウント]ダイアログ(図3参照)が表示されます。 - ブレークポイントをヒットした時から、[ヒット カウント数が次の数と等しい時に停止]を選ぶと右側に数値を入力する欄が現れますので、今回は「10」を入力し、[OK]をクリックしてください。ここに入れる数値がカウント数の条件です。
- [ブレークポイントの作成]ダイアログ(図2参照)の[ヒット カウント]の横には[ヒット カウントが 10 のとき]と表記されます。
- では、実際に実行し、10回クリックしてみてください。10回目でブレークするはずです。
Button1_Click
」にカーソルを合わせ、メニューバーのデバッグ(図1参照)から[ブレークポイントの作成]を選んでください。すると、[ブレークポイントの作成]ダイアログ(図2参照)が表示されます。条件付きブレークポイント
前回では、ただブレークポイントを作るだけでしたが、今回は、外部変数がある条件を満たした時にブレークする方法を紹介します。
ところで、VB6の様に直接変数が変わることによってブレークさせる…といった方法はありません。私の推測ですが、VS.NETからオブジェクト思考言語になった事で、変数の値を変えるのもメソッドであるべきだ、という思惑からではないでしょうか?
さて、本題に戻って、実際の手順は下記のようになります。VB/C#ともほぼ同じ操作です。
- 前回で使ったフォームにもう一つ、
Button
コントロールを追加してください。全部でButton
コントロールを2つ用意します。 - 外部変数を宣言します。今回は、
Button1_Click
イベントの上に宣言します(リスト1参照)。 - 変数の値を変えるメソッドを用意します。「
X_CountUp
」という関数名にします。 - ボタンのクリックイベント内に
X_CountUp
メソッドを呼び出します。 - これで準備は整いました。あとはブレークポイントの設定です。
- 関数に
X_CountUp
と入力されているのが、確認できたら、[条件]をクリックしてください。[ブレークポイントの条件]ダイアログ(図7参照)が表示されます。 - [ブレークポイントの条件]ダイアログ(図7参照)の[条件]項目に「X=10」(C#は「X==10」)と入力し、[OK]をクリックしてください。
- [ブレークポイントの作成]ダイアログ(図6参照)の[言語]項目がそれぞれの言語(VBは[Basic]、C#は[C#])になっているかどうかを確認し、[OK]をクリックしてください。
- では、実際に実行し、合計10回クリックしてみてください(どちらの
Button
コントロールでもかまいません)。10回目でブレークするはずです。
Private X As Integer Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click Call X_CountUp() End Sub Private Sub Button2_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button2.Click Call X_CountUp() End Sub Private Sub X_CountUp() X += 1 End Sub
private int X; private void button1_Click(object sender, System.EventArgs e) { X_CountUp(); } private void button2_Click(object sender, System.EventArgs e) { X_CountUp(); } private void X_CountUp(){ X += 1; }
X_CountUp
メソッドにカーソルを合わせ、メニューバーのデバッグ(図5参照)から[ブレークポイントの作成]を選んでください。応用
ループ処理やスレッド処理、データ取得処理など、期待するタイミングでブレークさせる事も可能です。
参考資料
この記事は、筆者のホームページで発表されているものを再構成したものです。より多くの方に利用してもらおうと考え、こちらにも投稿させていただきました。