アプリケーションのDebugDiagクラッシュルールを作成し、式を使用してブレークポイントを追加します
MSVCR90D!_wassert
cassertで定義されたプレーンアサートマクロをキャッチし、
MSVCR90D!_CrtDbgReport
MicrosoftデバッグCRT_ASSERT、_ASSERTEマクロをキャッチするには、
MSVCR90D!_CrtDbgReportW
Unicodeを有効にしてコンパイルする場合。
Ntdll!ZwTerminateProcessのブレークポイントを追加し、アサーション失敗ダイアログで中止を押し、生成されたログ(c:\ Program Files \ DebugDiag \ Logs \ <プロセス名>)のスタックトレースを確認することで、必要な式を見つけることができます。
「中止、再試行、無視」ダイアログコールを取り除くには
_CrtSetReportMode(_CRT_ASSERT, _CRTDBG_MODE_DEBUG);
アプリケーションの起動時のどこか( MSDNの_CrtSetReportModeの詳細な説明を参照してください)。残念ながら、これは_ASSERT、_ASSERTEマクロでのみ機能し、_wassert関数はこれらの_Crtモード設定とカスタムフックを完全にスキップします。
ノート:
MSVCR90Dは、Visual Studio 2008に付属するCRTのライブラリ名です(VS2010の場合はMSVCR100Dになります)。
DebugDiagに変更を加えるには、アプリケーションを直接(Explorerから、またはVisual Studioの[デバッグなしで開始]から)実行する必要があります。