How can I disable the debug assertion dialog on Windows?

后端 未结 3 499
野性不改
野性不改 2020-12-09 09:31

I have a bunch of unit tests that I\'m running in batch mode. Occasionally, one will crash with a debug assertion fired from the Visual C++ library. This causes a dialog t

相关标签:
3条回答
  • 2020-12-09 09:54

    Check out _CrtSetReportHook():

    http://msdn.microsoft.com/en-us/library/0yysf5e6.aspx

    MSDN advertises this as a robust way for an application to handle CRT runtime failures like assertions. Presumably you can define a report hook that dumps your process:

    How to create minidump for my process when it crashes?

    0 讨论(0)
  • 2020-12-09 10:00

    This code will disable display of dialog. Instead, it will print an error in the output window, and stderr.

    int main( int argc, char **argv )
    {
         if( !IsDebuggerPresent() )
         {
              _CrtSetReportMode( _CRT_ASSERT, _CRTDBG_MODE_FILE | _CRTDBG_MODE_DEBUG );
              _CrtSetReportFile( _CRT_ASSERT, _CRTDBG_FILE_STDERR );
         }
    
         ...
    }
    

    The same must be applied for _CRT_ERROR if you use Q_ASSERT from Qt library.

    0 讨论(0)
  • 2020-12-09 10:05

    I put the code for a suitable hook (that you can install with _CrtSetReportHook()) in: https://stackoverflow.com/a/28852798/2345997

    0 讨论(0)
提交回复
热议问题