/fsanitize-coverage
(Konfigurace pokrytí sanitizátorem)
Možnosti /fsanitize-coverage
kompilátoru dávají kompilátoru pokyn, aby přidal různé druhy instrumentačních bodů, kde se volají uživatelem definované funkce. Tyto možnosti jsou užitečné pro scénáře přibližných shod, které používají /fsanitize=fuzzer
, jako je OneFuzz. Další informace najdete v dokumentaci k OneFuzzu a projektu OneFuzz Na GitHubu.
Syntaxe
/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
Poznámky
Možnosti experimentálního /fsanitize-coverage
kompilátoru nabízejí podporu pokrytí kódu a různé možnosti pro úpravu instrumentace poskytované kompilátorem. Všechny tyto možnosti se automaticky nastaví při /fsanitize=fuzzer
zadání možnosti. Tato /fsanitize=fuzzer
možnost vyžaduje stejné instrumentační body a zpětná volání uvedená v těchto možnostech.
Možnosti /fsanitize-coverage
neumožňují syntaxi oddělenou čárkami, například: /fsanitize-coverage=edge,inline-8bit-counters,trace-cmp,trace-div
. Tyto možnosti zadejte jednotlivě.
Možnosti /fsanitize-coverage
jsou dostupné od sady Visual Studio 2022 verze 17.0.
Pokrytí kódu
Možnost /fsanitize-coverage=edge
kompilátoru umožňuje instrumentaci pokrytí kódu podél všech ne redundantních hran. Tuto možnost můžete /fno-sanitize-coverage=edge
zakázat, pokud už je k dispozici nebo odvozena jinou možností.
Vložené čítače
Možnost /fsanitize-coverage=inline-8bit-counters
kompilátoru dává kompilátoru pokyn, aby na každý relevantní okraj přidal vložený čítač. Tato možnost také přidá volání extern "C" void __sanitizer_cov_8bit_counters_init(uint8_t *start, uint8_t *stop)
, které musíte implementovat. Argumenty odpovídají začátku a konci pole, které obsahuje všechny 8bitové čítače vytvořené. Tuto možnost můžete /fno-sanitize-coverage=inline-8bit-counters
zakázat, pokud už je k dispozici nebo odvozena jinou možností.
Porovnání trasování
Možnost /fsanitize-coverage=trace-cmp
kompilátoru dává kompilátoru pokyn, aby vkládaly volání do následujících funkcí:
// 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);
Tuto možnost můžete /fno-sanitize-coverage=trace-cmp
zakázat, pokud už je k dispozici nebo odvozena jinou možností.
Trasování divizí
Možnost /fsanitize-coverage=trace-div
kompilátoru dává kompilátoru pokyn, aby vkládaly volání do následujících funkcí:
// Before a division instruction of the stated size.
void __sanitizer_cov_trace_div4(uint32_t Val);
void __sanitizer_cov_trace_div8(uint64_t Val);
Tuto možnost můžete /fno-sanitize-coverage=trace-div
zakázat, pokud už je k dispozici nebo odvozena jinou možností.
Nastavení pokročilých možností kompilátoru
Otevřete dialogové okno Stránky vlastností projektu.
Vyberte stránku vlastností příkazového řádku C/C++>Vlastnosti>konfigurace.
Upravte vlastnost Další možnosti a nastavte možnosti /fsanitize-coverage.
Změny uložíte kliknutím na OK nebo Použít .
Viz také
Možnosti kompilátoru MSVC
Syntaxe příkazového řádku kompilátoru MSVC
/fsanitize
(Povolení sanitizátorů)
Referenční dokumentace k sestavení a jazyku AddressSanitizer