Mat*_*man 17 c++ winapi visual-studio
我有一堆单元测试,我在批处理模式下运行.有时候,一个会因为从Visual C++库触发的调试断言而崩溃.这会导致弹出一个对话框,单元测试将停止运行,直到我单击"确定"关闭对话框.
如何让C++程序在遇到断言时崩溃(比如在Linux上),而不是弹出讨厌的对话框?
注意:我不想禁用断言; 只是对话框.
Her*_*bob 13
看看_CrtSetReportHook():
http://msdn.microsoft.com/en-us/library/0yysf5e6.aspx
MSDN将此广告宣传为应用程序处理CRT运行时故障(如断言)的强大方法.据推测,您可以定义一个转储进程的报表挂钩:
Kin*_*gon 11
此代码将禁用对话框的显示.相反,它将在输出窗口和stderr中打印错误.
int main( int argc, char **argv )
{
if( !IsDebuggerPresent() )
{
_CrtSetReportMode( _CRT_ASSERT, _CRTDBG_MODE_FILE | _CRTDBG_MODE_DEBUG );
_CrtSetReportFile( _CRT_ASSERT, _CRTDBG_FILE_STDERR );
}
...
}
Run Code Online (Sandbox Code Playgroud)