/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ähnung 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

  1. Öffnen Des Dialogfelds "Eigenschaftenseiten " des Projekts.

  2. Klicken Sie auf der Eigenschaftenseite auf Konfigurationseigenschaften>C/C++>Befehlszeile.

  3. Ändern Sie die Eigenschaft "Zusätzliche Optionen", um /fsanitize-coverage-Optionen festzulegen.

  4. Wählen Sie "OK" aus, oder "Übernehmen", um Ihre Änderungen zu speichern.

Siehe auch

MSVC-Compileroptionen
MSVC-Compiler-Befehlszeilensyntax
/fsanitize (Aktivieren von Sanitizern)
AddressSanitizer Build- und Sprachreferenz