2015-01-20 14 views
5

Czy istnieje sposób na wyłączenie wartości zastępczych zamiast przejścia w tryb Release. Muszę debugować kod, który bardzo często sprawia, że ​​twierdzenia i spowalniają moją pracę. Te zapewnienia nie mają związku z problemem, który próbuję rozwiązać, więc na razie spowalniają one mój postęp, ponieważ są one często nazywane w jednej z moich klas bazowych. Teraz nie mam czasu na ulepszenie ich projektu, więc ktoś może mi powiedzieć, czy istnieje sposób na wyłączenie potwierdzeń podczas pracy w trybie debugowania i korzystania z jego możliwości.Jak wyłączyć funkcję ASSERT w trybie debugowania w programie Visual Studio 2013

Odpowiedz

11

_CrtSetReportMode użytkownika

int iPrev = _CrtSetReportMode(_CRT_ASSERT,0); 
// Start Operation with no ASSERTs 
... 
// Restore previous mode with ASSERTs 
_CrtSetReportMode(_CRT_ASSERT,iPrev); 

Zamiast 0, można używać tylko _CRTDBG_MODE_DEBUG.

1

#define NDEBUG przed #include <assert.h> wyłączenie makra assert.

Możesz tak dodać do definicji pre-procesora w ustawieniach projektu.

+0

Przydatne informacje, jednak MFC "ASSERT" to nie to samo, co standardowa biblioteka 'assert' i jest kontrolowana w różny sposób. – bames53

3

Możesz użyć _set_error_mode lub _CrtSetReportMode (patrz odpowiedź xMRi), aby zmienić metodę zgłaszania awarii i uniknąć modalnego okna dialogowego. Zobacz fragment kodu tam:

int main() 
{ 
    _set_error_mode(_OUT_TO_STDERR); 
    assert(2+2==5); 
} 

Należy również pamiętać, że twierdzą, awarie są zazwyczaj z jakiegoś powodu, a chcesz naprawić kod, nie tylko tłumić raport. Usuwając je całkowicie z debugowania, po prostu łamiesz dobre rzeczy stworzone dla ciebie.

Powiązane problemy