/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

  1. Aprire la finestra di dialogo Pagine delle proprietà del progetto.

  2. Selezionare la pagina delle proprietà Proprietà di configurazione>C/C++>Riga di comando.

  3. Modificare la proprietà Opzioni aggiuntive per impostare le opzioni /fsanitize-coverage .

  4. 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