Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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