/fsanitize-coverage
(Configurar cobertura do limpador)
As opções do compilador /fsanitize-coverage
instruem o compilador a adicionar vários tipos de pontos de instrumentação em que as funções definidas pelo usuário são chamadas. Essas opções são úteis para cenários de teste de fuzzing que usam /fsanitize=fuzzer
, como o OneFuzz. Para obter mais informações, confira a documentação do OneFuzz e o projeto do OneFuzz no GitHub.
Sintaxe
/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
Comentários
As opções experimentais /fsanitize-coverage
do compilador oferecem suporte à cobertura de código e várias opções para modificar qual instrumentação fornecida pelo compilador é gerada. Todas essas opções são definidas automaticamente quando a opção /fsanitize=fuzzer
é especificada. A opção /fsanitize=fuzzer
requer os mesmos pontos de instrumentação e retornos de chamada mencionados nessas opções.
As opções /fsanitize-coverage
não permitem sintaxe separada por vírgula, por exemplo: /fsanitize-coverage=edge,inline-8bit-counters,trace-cmp,trace-div
. Especifique essas opções individualmente.
As opções /fsanitize-coverage
estão disponíveis a partir do Visual Studio 2022 versão 17.0.
Cobertura de código
A opção do compilador /fsanitize-coverage=edge
habilita a instrumentação de cobertura de código em todas as bordas não redundantes. Use /fno-sanitize-coverage=edge
para desabilitar essa opção se ela já estiver fornecida ou implícita por outra opção.
Contadores embutidos
A opção do compilador /fsanitize-coverage=inline-8bit-counters
instrui o compilador a adicionar um incremento de contador embutido em todas as bordas relevantes. Essa opção também adiciona uma chamada à extern "C" void __sanitizer_cov_8bit_counters_init(uint8_t *start, uint8_t *stop)
que você deve implementar. Os argumentos correspondem ao início e ao fim de uma matriz que contém todos os contadores de 8 bits criados. Use /fno-sanitize-coverage=inline-8bit-counters
para desabilitar essa opção se ela já estiver fornecida ou implícita por outra opção.
Comparações de rastreamento
A opção do compilador /fsanitize-coverage=trace-cmp
instrui o compilador a inserir chamadas às seguintes funções:
// 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);
Use /fno-sanitize-coverage=trace-cmp
para desabilitar essa opção se ela já estiver fornecida ou implícita por outra opção.
Divisões de rastreamento
A opção do compilador /fsanitize-coverage=trace-div
instrui o compilador a inserir chamadas às seguintes funções:
// Before a division instruction of the stated size.
void __sanitizer_cov_trace_div4(uint32_t Val);
void __sanitizer_cov_trace_div8(uint64_t Val);
Use /fno-sanitize-coverage=trace-div
para desabilitar essa opção se ela já estiver fornecida ou implícita por outra opção.
Para definir as opções avançadas do compilador
Abra a caixa de diálogo Páginas de Propriedades do seu projeto.
Selecione a página de propriedades Propriedades de Configuração>C/C++>Linha de Comando.
Modifique a propriedade Opções Adicionais para definir as opções /fsanitize-coverage.
Escolha OK ou Aplicar para salvar as alterações.
Confira também
Opções do compilador MSVC
Sintaxe da linha de comando do compilador MSVC
/fsanitize
(Habilitar limpadores)
Referência de linguagem e build do AddressSanitizer