SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

特集記事

Visual Studio .NETでの条件付きブレークポイントの作り方

デバッグ時のブレークポイント活用

  • X ポスト
  • このエントリーをはてなブックマークに追加

意外と知られていないのが、条件付きブレークポイントの作り方です。ヒットカウントと外部変数の条件によって停止するブレークポイントを作る方法を紹介します。

  • X ポスト
  • このエントリーをはてなブックマークに追加

はじめに

 意外と知られていないのが、条件付きブレークポイントの作り方です。まずは、10回クリックしたらブレークする方法を紹介します。この記事ではVisual Basic .NETを元に解説していますが、VB/C#ともほぼ同じ操作になっています。

必要な環境

 Visual Studio .NET 2002 / 2003

対象読者

 Visual Studio .NETを使用している開発者。

ヒットカウントによるブレークポイント

 手順は簡単です。

  1. 適当なフォームにButtonコントロールを貼り付け、そのコントロールをダブルクリックします。
  2. 恐らく、新規作成の手順で行えば、Button1_Clickというイベントが追加されましたね(C#はbutton1_Click)。
  3. そうしたら、「Button1_Click」にカーソルを合わせ、メニューバーのデバッグ(図1参照)から[ブレークポイントの作成]を選んでください。すると、[ブレークポイントの作成]ダイアログ(図2参照)が表示されます。
    図1 [ブレークポイントの作成]コマンド
    図1 [ブレークポイントの作成]コマンド
    図2 [ブレークポイントの作成]ダイアログ
    図2 [ブレークポイントの作成]ダイアログ
     
  4. 関数に「Button1_Click」と入力されているのが、確認できたら、[ヒット カウント]をクリックしてください。[ブレークポイントのヒット カウント]ダイアログ(図3参照)が表示されます。
  5. 図3 [ブレークポイントのヒット カウント]ダイアログ
    図3 [ブレークポイントのヒット カウント]ダイアログ
  6. ブレークポイントをヒットした時から、[ヒット カウント数が次の数と等しい時に停止]を選ぶと右側に数値を入力する欄が現れますので、今回は「10」を入力し、[OK]をクリックしてください。ここに入れる数値がカウント数の条件です。
  7. [ブレークポイントの作成]ダイアログ(図2参照)の[ヒット カウント]の横には[ヒット カウントが 10 のとき]と表記されます。
  8. [OK]をクリックしたら、図4のようにブレークポイントが記されます。
     
    図4 VB.NETの場合
    図4 VB.NETの場合
    図4 C#の場合
    図4 C#の場合
  9. では、実際に実行し、10回クリックしてみてください。10回目でブレークするはずです。

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

 前回では、ただブレークポイントを作るだけでしたが、今回は、外部変数がある条件を満たした時にブレークする方法を紹介します。

 ところで、VB6の様に直接変数が変わることによってブレークさせる…といった方法はありません。私の推測ですが、VS.NETからオブジェクト思考言語になった事で、変数の値を変えるのもメソッドであるべきだ、という思惑からではないでしょうか?

 さて、本題に戻って、実際の手順は下記のようになります。VB/C#ともほぼ同じ操作です。

  1. 前回で使ったフォームにもう一つ、Buttonコントロールを追加してください。全部でButtonコントロールを2つ用意します。
  2. 外部変数を宣言します。今回は、Button1_Clickイベントの上に宣言します(リスト1参照)。
  3. 変数の値を変えるメソッドを用意します。「X_CountUp」という関数名にします。
  4. ボタンのクリックイベント内にX_CountUpメソッドを呼び出します。
  5.  
    リスト1 VB.NET
    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
    
     
    リスト1 C#
    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;
    }
    
     
  6. これで準備は整いました。あとはブレークポイントの設定です。
  7. 今回は、X_CountUpメソッドにカーソルを合わせ、メニューバーのデバッグ(図5参照)から[ブレークポイントの作成]を選んでください。
    図5 [ブレークポイントの作成]コマンド
    図5 [ブレークポイントの作成]コマンド
    すると、[ブレークポイントの作成]ダイアログ(図6参照)が表示されます。
    図6 [ブレークポイントの作成]ダイアログ
    図6 [ブレークポイントの作成]ダイアログ
  8. 関数にX_CountUpと入力されているのが、確認できたら、[条件]をクリックしてください。[ブレークポイントの条件]ダイアログ(図7参照)が表示されます。
  9. 図7 [ブレークポイントの条件]ダイアログ
    図7 [ブレークポイントの条件]ダイアログ
  10. [ブレークポイントの条件]ダイアログ(図7参照)の[条件]項目に「X=10」(C#は「X==10」)と入力し、[OK]をクリックしてください。
  11. [ブレークポイントの作成]ダイアログ(図6参照)の[言語]項目がそれぞれの言語(VBは[Basic]、C#は[C#])になっているかどうかを確認し、[OK]をクリックしてください。
  12. では、実際に実行し、合計10回クリックしてみてください(どちらのButtonコントロールでもかまいません)。10回目でブレークするはずです。

応用

 ループ処理やスレッド処理、データ取得処理など、期待するタイミングでブレークさせる事も可能です。

参考資料

 この記事は、筆者のホームページで発表されているものを再構成したものです。より多くの方に利用してもらおうと考え、こちらにも投稿させていただきました。

修正履歴

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
特集記事連載記事一覧

もっと読む

この記事の著者

ぺがらぼ(ペガラボ)

Microsoft MVP for Visual Developer - Visual Basic.NETに限らず、様々な分野で技術研究をしている「ぺがらぼ」の管理人。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/87 2008/09/01 18:47

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング