2012-12-19 22 views
13

Mam kilka testów jednostkowych, które uruchamiam w trybie wsadowym. Czasami jeden z nich zawiesza się z asercją debugowania wywołaną z biblioteki Visual C++. Spowoduje to pojawienie się okna dialogowego, a testy jednostek zatrzymają się, dopóki nie kliknę "OK", aby zamknąć okno dialogowe.Jak mogę wyłączyć okno dialogowe asercji debugowania w systemie Windows?

W jaki sposób mogę spowodować, że program w C++ po prostu zawiesza się (jak na Linuksie), gdy uderza w asercję, zamiast pojawiać się denerwujące okno dialogowe?

Uwaga: Nie chcę wyłączać asercji; tylko okno dialogowe.

Odpowiedz

5

Kod ten będzie wyłączyć wyświetlanie okna dialogowego. Zamiast tego wydrukuje błąd w oknie wyjściowym i 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

Dlaczego negatywne głosy? – KindDragon

+0

Dziękujemy! Uratowałeś mi życie!! – YukiNyaa

Powiązane problemy