Udostępnij za pośrednictwem


/RTC (Sprawdzanie błędów czasu wykonywania)

Używane do włączania i wyłączania funkcji kontroli błąd w czasie wykonywania, w połączeniu z runtime_checks pragma.

/RTC1
/RTCc
/RTCs
/RTCu

Argumenty

  • 1
    Equivalent of /RTCsu.

  • c
    Raportów wówczas, gdy wartość jest przypisany do mniejszego typu danych i powoduje utratę danych.Na przykład, jeśli wartość typu short 0x101 jest przypisana do zmiennej typu char.

    Ta opcja raporty sytuacje, w których chcesz obciąć, na przykład, jeśli chcesz pierwszych ośmiu bitów int zwracane jako char.Ponieważ /RTCc powoduje błąd w czasie wykonywania jeśli wszelkie informacje zostaną utracone w wyniku przypisania, może maskować off informacje niezbędne do uniknięcia błędu wykonania dzięki /RTCc.Na przykład:

    #include <crtdbg.h>
    
    char get8bits(int value, int position) {
       _ASSERT(position < 32);
       return (char)(value >> position);
       // Try the following line instead:
       // return (char)((value >> position) & 0xff);
    }
    
    int main() {
       get8bits(12341235,3);
    }
    
  • s
    Włącza stos ramki wykonywania kontroli błędów, w następujący sposób:

    • Inicjowanie zmiennych lokalnych na wartość różną od zera.To ułatwia identyfikowanie błędów, które nie są wyświetlane podczas uruchamiania w trybie debugowania.Istnieje większe szanse, że zmienne stosu będą nadal zero w porównaniu do wydanej kompilacji z powodu optymalizacje kompilatora zmiennych stosu w wydanej kompilacji kompilacja do debugowania.Po wykorzystaniu przestrzeni jego stosie programu to jest nigdy nie zerowany przez kompilator.W związku z tym stos kolejnych, niezainicjowanych zmiennych, które się do wykorzystania w tym samym obszarze stosu może zwracać wartości pozostały z wcześniejszego używania tej pamięci stosu.

    • Wykrywanie przepełnień i opóźnieniu lokalnych zmiennych, takich jak tablice./RTCspodczas uzyskiwania dostępu do pamięci, która jest wynikiem dopełnienie kompilatora w ramach struktury nie wykryje przekroczenia.Dopełnienie może wystąpić przy użyciu align (C++), /Zp (Wyrównanie członka struktury), lub pakiet, lub jeśli zamówienie struktury elementy w taki sposób, aby wymagać kompilatora, aby dodać odstęp od krawędzi.

    • Weryfikacji wskaźnik stosu, która wykrywa uszkodzenie wskaźnik stosu.Może być spowodowane uszkodzeniem wskaźnik stosu niezgodność konwencji wywoływania.Na przykład, za pomocą wskaźnika funkcji, wywołanie funkcji w bibliotece DLL, która zostanie wyeksportowana jako __stdcall , ale zadeklarować wskaźnika do funkcji jako __cdecl.

  • u
    Raporty użyto zmiennej bez posiadające została zainicjowana.Na przykład, instrukcja, która generuje C4701 może również generować błąd w czasie wykonywania pod /RTCu.Żadnych instrukcji, która generuje Ostrzeżenie C4700 kompilatora (poziom 1 i 4) wygeneruje błąd wykonania pod /RTCu.

    Jednakże należy rozważyć następujący fragment kodu:

    int a, *b, c;
    if ( 1 )
    b = &a;
    c = a;  // No run-time error with /RTCu
    

    Jeśli zmienna może został zainicjowany, nie zostanie ona zgłoszona w czasie wykonywania przez /RTCu.Na przykład po zmiennej jest aliasu za pomocą wskaźnika, kompilator nie śledzić zmiennej i Raport niezainicjowany zastosowań.W efekcie może zainicjować zmienną przez przyjęcie jego adresu.& Operator działa jak operator przypisania w tej sytuacji.

Uwagi

Błąd w czasie wykonywania kontroli są sposobem zlokalizowania błędów w kodzie uruchomiony; Aby uzyskać więcej informacji, zobacz Porady: Korzystanie z macierzystego sprawdzania w trakcie wykonywania.

Jeśli kompilacja programu w wierszu polecenia przy użyciu dowolnej z /RTC opcje kompilatora, wszelkie pragmy optymalizuj instrukcje w kodzie dyskretnie nie powiedzie się.Dlatego błąd w czasie wykonywania kontroli nie są prawidłowe w kompilacji release (zoptymalizowana).

Należy używać /RTC dla rozwoju buduje; /RTC nie powinny być używane dla kompilacji detalicznych./RTCNie można używać z optymalizacje kompilatora (/O Opcje (optymalizuj kod)).Obraz programu zbudowany z /RTC będzie nieco większe i nieco wolniej niż obraz zbudowany z /Od (5 procent wolniejszy niż /Od budować).

Dyrektywy preprocesora __MSVC_RUNTIME_CHECKS zostanie zdefiniowana, gdy używana jest dowolna /RTC opcji lub /GZ.

Aby ustawić tę opcję kompilatora w środowisku programowania Visual Studio

  1. Otwórz okno dialogowe Strony właściwości projektu.Szczegółowe informacje – zobacz: Porady: otwieranie stron właściwości projektów.

  2. Kliknij folder C/C++.

  3. Kliknij stronę właściwości Generowanie kodu.

  4. Zmodyfikuj jedno lub oba z następujących właściwości: Podstawowe sprawdza Runtime lub Mniejsze Sprawdź typ.

Aby programowo ustawić tę opcję kompilatora

Zobacz też

Informacje

Opcje kompilatora

Ustawianie opcji kompilatora

Inne zasoby

RTC sample