2012-12-19 71 views
13

我有一堆單元測試,我在批處理模式下運行。偶爾,一個會從Visual C++庫中觸發一個調試斷言而崩潰。這會導致一個對話框彈出,單元測試停止運行,直到我點擊「確定」關閉對話框。如何在Windows上禁用調試斷言對話框?

如何讓C++程序在碰到斷言時崩潰(如在Linux上),而不是彈出煩人的對話框?

注意:我不想禁用斷言;只是對話。

回答

5

此代碼將禁用顯示對話框。相反,它會在輸出窗口和stderr中輸出一個錯誤。

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

    ... 
} 
+0

爲什麼反對票? – KindDragon

+0

謝謝!你救了我的命!! – YukiNyaa