/fsanitize-coverage
(Konfigurieren der Bereinigungsabdeckung)
Die /fsanitize-coverage
Compileroptionen weisen den Compiler an, verschiedene Arten von Instrumentierungspunkten hinzuzufügen, in denen benutzerdefinierte Funktionen aufgerufen werden. Diese Optionen sind nützlich für Fuzzingszenarien, die wie OneFuzz verwenden /fsanitize=fuzzer
. Weitere Informationen finden Sie in der OneFuzz-Dokumentation und im OneFuzz-GitHub-Projekt.
Syntax
/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
Hinweise
Die experimentellen /fsanitize-coverage
Compileroptionen bieten Unterstützung für die Codeabdeckung und verschiedene Optionen zum Ändern der vom Compiler bereitgestellten Instrumentierung. Alle diese Optionen werden automatisch festgelegt, wenn die /fsanitize=fuzzer
Option angegeben wird. Für die /fsanitize=fuzzer
Option sind dieselben Instrumentierungspunkte und Rückrufe erforderlich, die in diesen Optionen erwähnt werden.
Die /fsanitize-coverage
Optionen lassen keine kommagetrennte Syntax zu, z. B.: /fsanitize-coverage=edge,inline-8bit-counters,trace-cmp,trace-div
. Geben Sie diese Optionen einzeln an.
Die /fsanitize-coverage
Optionen stehen ab Visual Studio 2022, Version 17.0, zur Verfügung.
Codeabdeckung
Die /fsanitize-coverage=edge
Compileroption ermöglicht codeabdeckungsinstrumentation entlang aller nicht redundanten Edges. Verwenden Sie /fno-sanitize-coverage=edge
diese Option, um diese Option zu deaktivieren, wenn sie bereits von einer anderen Option bereitgestellt oder impliziert wird.
Inlinezähler
Die /fsanitize-coverage=inline-8bit-counters
Compileroption weist den Compiler an, auf jedem relevanten Edge einen Inlinezähler-Inkrement hinzuzufügen. Mit dieser Option wird auch ein Aufruf hinzugefügt, den extern "C" void __sanitizer_cov_8bit_counters_init(uint8_t *start, uint8_t *stop)
Sie implementieren müssen. Die Argumente entsprechen dem Anfang und Ende eines Arrays, das alle erstellten 8-Bit-Leistungsindikatoren enthält. Verwenden Sie /fno-sanitize-coverage=inline-8bit-counters
diese Option, um diese Option zu deaktivieren, wenn sie bereits von einer anderen Option bereitgestellt oder impliziert wird.
Ablaufverfolgungsvergleiche
Die /fsanitize-coverage=trace-cmp
Compileroption weist den Compiler an, Aufrufe an die folgenden Funktionen einzufügen:
// 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);
Verwenden Sie /fno-sanitize-coverage=trace-cmp
diese Option, um diese Option zu deaktivieren, wenn sie bereits von einer anderen Option bereitgestellt oder impliziert wird.
Ablaufverfolgungsabteilungen
Die /fsanitize-coverage=trace-div
Compileroption weist den Compiler an, Aufrufe an die folgenden Funktionen einzufügen:
// Before a division instruction of the stated size.
void __sanitizer_cov_trace_div4(uint32_t Val);
void __sanitizer_cov_trace_div8(uint64_t Val);
Verwenden Sie /fno-sanitize-coverage=trace-div
diese Option, um diese Option zu deaktivieren, wenn sie bereits von einer anderen Option bereitgestellt oder impliziert wird.
So legen Sie die erweiterten Compileroptionen fest
Öffnen Des Dialogfelds "Eigenschaftenseiten " des Projekts.
Klicken Sie auf der Eigenschaftenseite auf Konfigurationseigenschaften>C/C++>Befehlszeile.
Ändern Sie die Eigenschaft "Zusätzliche Optionen", um /fsanitize-coverage-Optionen festzulegen.
Wählen Sie OK oder Übernehmen, um die Änderungen zu speichern.
Siehe auch
MSVC-Compileroptionen
Syntax für die MSVC-Compilerbefehlszeile
/fsanitize
(Aktivieren von Sanitizern)
AddressSanitizer Build- und Sprachreferenz