這工作(對我來說ATLEAST,在VS 2008): (從本質上講,從掛鉤函數返回TRUE)
int __cdecl CrtDbgHook(int nReportType, char* szMsg, int* pnRet)
{
return TRUE;//Return true - Abort,Retry,Ignore dialog will *not* be displayed
return FALSE;//Return false - Abort,Retry,Ignore dialog *will be displayed*
}
int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
_CrtSetReportHook2(_CRT_RPTHOOK_INSTALL, CrtDbgHook);
assert(false);
getch();
return 1;
}
你也可以寫你自己的斷言類似的行爲(請注意,這將顯示「Break,Continue」對話框):
#define MYASSERT(x) { if(!(x)) {DbgRaiseAssertionFailure();} }
int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
MYASSERT(false);
getch();
return 1;
}
希望對您有所幫助!
不幸的是,這並沒有解決我的問題。 在調用CrtDbgHook之前,我得到了大約25-30中止,重試,忽略對話框。 – Ted 2009-07-23 18:34:58