/fsanitize-coverage
(Configurare la copertura di sanificatore)
Le opzioni del /fsanitize-coverage
compilatore indicano al compilatore di aggiungere vari tipi di punti di strumentazione in cui vengono chiamate funzioni definite dall'utente. Queste opzioni sono utili per scenari fuzzing che usano /fsanitize=fuzzer
, ad esempio OneFuzz. Per altre informazioni, vedere la documentazione di OneFuzz e il progetto GitHub OneFuzz.
Sintassi
/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
Osservazioni:
Le opzioni del compilatore sperimentale /fsanitize-coverage
offrono supporto code coverage e varie opzioni per modificare la strumentazione fornita dal compilatore generata. Tutte queste opzioni vengono impostate automaticamente quando viene specificata l'opzione /fsanitize=fuzzer
. L'opzione /fsanitize=fuzzer
richiede gli stessi punti di strumentazione e callback indicati in queste opzioni.
Le /fsanitize-coverage
opzioni non consentono la sintassi delimitata da virgole, ad esempio : /fsanitize-coverage=edge,inline-8bit-counters,trace-cmp,trace-div
. Specificare queste opzioni singolarmente.
Le /fsanitize-coverage
opzioni sono disponibili a partire da Visual Studio 2022 versione 17.0.
Code coverage
L'opzione /fsanitize-coverage=edge
del compilatore abilita la strumentazione code coverage lungo tutti i bordi non ridondanti. Usare /fno-sanitize-coverage=edge
per disabilitare questa opzione se è già fornita o implicita da un'altra opzione.
Contatori inline
L'opzione /fsanitize-coverage=inline-8bit-counters
del compilatore indica al compilatore di aggiungere un incremento del contatore inline su ogni bordo pertinente. Questa opzione aggiunge anche una chiamata a extern "C" void __sanitizer_cov_8bit_counters_init(uint8_t *start, uint8_t *stop)
che è necessario implementare. Gli argomenti corrispondono all'inizio e alla fine di una matrice che contiene tutti i contatori a 8 bit creati. Usare /fno-sanitize-coverage=inline-8bit-counters
per disabilitare questa opzione se è già fornita o implicita da un'altra opzione.
Confronti di traccia
L'opzione /fsanitize-coverage=trace-cmp
del compilatore indica al compilatore di inserire chiamate alle funzioni seguenti:
// 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);
Usare /fno-sanitize-coverage=trace-cmp
per disabilitare questa opzione se è già fornita o implicita da un'altra opzione.
Divisioni di traccia
L'opzione /fsanitize-coverage=trace-div
del compilatore indica al compilatore di inserire chiamate alle funzioni seguenti:
// Before a division instruction of the stated size.
void __sanitizer_cov_trace_div4(uint32_t Val);
void __sanitizer_cov_trace_div8(uint64_t Val);
Usare /fno-sanitize-coverage=trace-div
per disabilitare questa opzione se è già fornita o implicita da un'altra opzione.
Per impostare le opzioni avanzate del compilatore
Aprire la finestra di dialogo Pagine delle proprietà del progetto.
Selezionare la pagina delle proprietà Proprietà di configurazione>C/C++>Riga di comando.
Modificare la proprietà Opzioni aggiuntive per impostare le opzioni /fsanitize-coverage .
Scegliere OK o Applica per salvare le modifiche.
Vedi anche
Opzioni del compilatore MSVC
Sintassi della riga di comando del compilatore MSVC
/fsanitize
(Abilita sanificatori)
Riferimento alla compilazione e al linguaggio AddressSanitizer