2011-10-07 3 views
4

私は何度もこのような状況に遭遇しましたが、特定のブレークポイントがヒットした後に何百回も呼び出される関数に分割する必要があります。Visual C++ 2008で別のブレークが発生した場合にのみ中断する方法はありますか?

オブジェクトのステータスを更新する関数があるとします。これは、 フレームごとに複数回呼び出されます。私はオブジェクトを編集する関数をテストしています。その機能がヒットするとすぐに、私はUpdateStatus機能に侵入することができます。明らかに、もし私がUpdateStatusにブレークポイントを置くと、それはいつも壊れてしまい、私は決してプログラムと対話することができません。他の関数のブレークポイントがヒットした場合にのみ、ブレークポイントに条件を設定してブレークすることができれば、どんなに素晴らしいだろうか。これは単なる例であることに注意してください。

私はあなたがUpdateStatus自体の中conditional breakpointを配置することができるかもしれないのVisual C++ 2008

+0

1つのブレークポイントがヒットした場合は、手動で別のブレークポイントを設定またはアクティブにすることはできませんか?いいえ、それは、ブレークポイントを無効にします。 –

+0

だから、最初のブレークがヒットしたら、2回目のブレークを常にトリガし続けるか、最初のブレークが再びヒットするまでトリガするだけですか? – greatwolf

+2

ブレークポイントを右クリックして、ヒット数またはフィルタのいずれかを選択します。 –

答えて

1

を使用しています。

また、コールサイトで条件付きブレークポイントをUpdateStatusに設定し、手動でステップインを実行します。

ブレークポイント条件の複雑さと、その条件の入力が特定のスタックフレームから「到達可能」かどうかによって、どちらか一方(またはまったく)ができるかどうかが決まります。

1

ヒット時に最初のブレークポイントにフラグを設定し、そのフラグを条件として2番目のブレークポイントでチェックさせることができます。
あなたはそうのようなヒット、ときに印刷する「メッセージ」指定してフラグを設定することができます

{flag = 1;} 

flagはもちろん、範囲内に存在する必要があります。
(デバッグ中にのみ存在する変数を宣言することができればうれしいですが、これを行う方法はわかりません)

2

私はこのような状況に遭遇しました。 Visual StudioのマクロをVisual Studioのトレースポイントと組み合わせて、これを簡単に実行できると思います。このページでは、ブレークポイントを有効にするマクロを記述する方法について説明します。http://weseetips.com/tag/enable-breakpoint/単一のブレークポイントのみを有効にしたいので、マクロ内でファイルと行番号の組み合わせを使用して、必要なブレークポイントここにブレークポイントオブジェクトのメンバを見つけることができます:http://msdn.microsoft.com/en-us/library/envdte.breakpoint.aspx(ファイルとFileLine見て特に有効)

このページでは、マクロを実行するために、「トレースポイント」を使用する方法について説明します。http://msdn.microsoft.com/en-us/library/232dxah7.aspx(このページは、トレースポイントを設定するためのいくつかの素晴らしいスクリーンショットがあります:http://weblogs.asp.net/scottgu/archive/2010/08/18/debugging-tips-with-visual-studio-2010.aspx

したがって、ブレークポイントを有効にするマクロを作成し、マクロを実行するトレースポイントを作成することができます。

関連する問題