5

これがシナリオです。会社の別のチームが開発したライブラリを使用している自分のアプリ (C/C++) をデバッグしています。コードがエッジ ケースを生成すると、アサーションが失敗します。アサーションが正しく定式化されていないため、ライブラリ関数は正常に機能しているため、苦痛ですが、続行する必要がある場所でこれらすべての中断が発生するため (ループ内にあるため、多くの場合)、実際に興味のあるものに到達できます。 . 他の理由で、デバッグ時にライブラリのデバッグ バージョンを使用する必要があります。他のチームは、次のリリースまでこれを修正しません (ねえ、私たちのマシンで動作します)。

このコード セクションによってアサートされたブレークポイントを無視するようにデバッガーに指示できますか (つまり、自動的に続行できますか)。

4

4 に答える 4

3

コードが単独で (__debugbreak または int 3 によって) ブレークポイントをトリガーしている場合、ブレークポイントは Visual Studio にまったく認識されないため、条件付きブレークポイントを使用できません。ただし、デバッガーからコードを変更することで、関心のないブレークポイントを無効にできる場合があります。デバッグセッションごとにこれを繰り返す必要があるため、おそらくあなたが望むものではありませんが、それでも何もないよりはましかもしれません. 詳細については、プログラムによるブレークポイント/アサートを無効にする方法を参照してください。.

于 2008-11-20T12:27:32.603 に答える
2

デバッグ ライブラリで ASSERT() の失敗を自動的に無視する良い方法はありません。それを使用する必要がある場合は、今すぐ修正する必要があることを他のチームに納得させる必要があります。または、このライブラリのソースを持っている場合は、仕事を得るためにアサーションを自分で修正または削除できます。その間に行われます。

于 2008-11-20T12:28:11.277 に答える
2

ライブラリへの呼び出しの周りに例外ハンドラーを追加し、EXCEPTION_BREAKPOINT 例外をキャッチして何もしないことができます。

次のリンクの例 2 は、やりたいことのようです。

http://msdn.microsoft.com/en-us/library/ms681409(VS.85).aspx

于 2009-05-12T12:48:37.283 に答える
0

条件付きブレークポイントを使用できます。いくつかのリンク:

http://support.microsoft.com/kb/308469
http://dotnettipoftheday.org/tips/conditional_breakpoint.aspx

于 2008-11-20T12:11:29.563 に答える