Udostępnij za pośrednictwem


/fsanitize-coverage (Konfigurowanie pokrycia sanitizera)

Opcje /fsanitize-coverage kompilatora instruują kompilator, aby dodać różne rodzaje punktów instrumentacji, w których są wywoływane funkcje zdefiniowane przez użytkownika. Te opcje są przydatne w przypadku scenariuszy rozmytych, które używają /fsanitize=fuzzermetody , takiej jak OneFuzz. Aby uzyskać więcej informacji, zobacz dokumentację oneFuzz i projekt OneFuzz w witrynie GitHub.

Składnia

/fsanitize-coverage=edge
/fsanitize-coverage=inline-8bit-counters
/fsanitize-coverage=trace-cmp
/fsanitize-coverage=trace-div
/fno-sanitize-coverage=edge
/fno-sanitize-coverage=inline-8bit-counters
/fno-sanitize-coverage=trace-cmp
/fno-sanitize-coverage=trace-div

Uwagi

Opcje kompilatora eksperymentalnego /fsanitize-coverage oferują obsługę pokrycia kodu i różne opcje modyfikowania generowanej instrumentacji dostarczonej przez kompilator. Wszystkie te opcje są ustawiane automatycznie po określeniu /fsanitize=fuzzer opcji. Opcja /fsanitize=fuzzer wymaga tych samych punktów instrumentacji i wywołań zwrotnych wymienionych w tych opcjach.

Opcje /fsanitize-coverage nie zezwalają na składnię rozdzielaną przecinkami, na przykład: /fsanitize-coverage=edge,inline-8bit-counters,trace-cmp,trace-div. Określ te opcje indywidualnie.

Dostępne /fsanitize-coverage są opcje począwszy od programu Visual Studio 2022 w wersji 17.0.

Pokrycie kodu

Opcja /fsanitize-coverage=edge kompilatora umożliwia instrumentację pokrycia kodu wzdłuż wszystkich nie nadmiarowych krawędzi. Użyj /fno-sanitize-coverage=edge polecenia , aby wyłączyć tę opcję, jeśli została już podana lub dorozumiana przez inną opcję.

Wbudowane liczniki

Opcja /fsanitize-coverage=inline-8bit-counters kompilatora nakazuje kompilatorowi dodanie przyrostu licznika wbudowanego na każdej odpowiedniej krawędzi. Ta opcja dodaje również wywołanie, do extern "C" void __sanitizer_cov_8bit_counters_init(uint8_t *start, uint8_t *stop) którego należy zaimplementować. Argumenty odpowiadają początkowemu i końcowemu tablicy zawierającej wszystkie utworzone liczniki 8-bitowe. Użyj /fno-sanitize-coverage=inline-8bit-counters polecenia , aby wyłączyć tę opcję, jeśli została już podana lub dorozumiana przez inną opcję.

Porównania śledzenia

Opcja /fsanitize-coverage=trace-cmp kompilatora nakazuje kompilatorowi wstawianie wywołań do następujących funkcji:

// Before each comparison instruction of the stated size.
void __sanitizer_cov_trace_cmp1(uint8_t Arg1, uint8_t Arg2);
void __sanitizer_cov_trace_cmp2(uint16_t Arg1, uint16_t Arg2);
void __sanitizer_cov_trace_cmp4(uint32_t Arg1, uint32_t Arg2);
void __sanitizer_cov_trace_cmp8(uint64_t Arg1, uint64_t Arg2);

// Before each comparison instruction of the stated size, if one of the operands (Arg1) is constant.
void __sanitizer_cov_trace_const_cmp1(uint8_t Arg1, uint8_t Arg2);
void __sanitizer_cov_trace_const_cmp2(uint16_t Arg1, uint16_t Arg2);
void __sanitizer_cov_trace_const_cmp4(uint32_t Arg1, uint32_t Arg2);
void __sanitizer_cov_trace_const_cmp8(uint64_t Arg1, uint64_t Arg2);

Użyj /fno-sanitize-coverage=trace-cmp polecenia , aby wyłączyć tę opcję, jeśli została już podana lub dorozumiana przez inną opcję.

Podziały śledzenia

Opcja /fsanitize-coverage=trace-div kompilatora nakazuje kompilatorowi wstawianie wywołań do następujących funkcji:

// Before a division instruction of the stated size.
void __sanitizer_cov_trace_div4(uint32_t Val);
void __sanitizer_cov_trace_div8(uint64_t Val);

Użyj /fno-sanitize-coverage=trace-div polecenia , aby wyłączyć tę opcję, jeśli została już podana lub dorozumiana przez inną opcję.

Aby ustawić zaawansowane opcje kompilatora

  1. Otwórz okno dialogowe Strony właściwości projektu.

  2. Wybierz stronę Właściwości>konfiguracji C/C++>Wiersza polecenia.

  3. Zmodyfikuj właściwość Opcje dodatkowe, aby ustawić opcje /fsanitize-coverage.

  4. Wybierz przycisk OK lub Zastosuj , aby zapisać zmiany.

Zobacz też

Opcje kompilatora MSVC
Składnia wiersza polecenia kompilatora MSVC
/fsanitize (Włącz narzędzia sanitizer)
Dokumentacja języka i kompilacji narzędzia AddressSanitizer