这工作(对我来说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