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
5
A
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.
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.
Przydatne informacje, jednak MFC "ASSERT" to nie to samo, co standardowa biblioteka 'assert' i jest kontrolowana w różny sposób. – bames53