Compartilhar via


/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

  1. Abra a caixa de diálogo Páginas de Propriedades do seu projeto.

  2. Selecione a página de propriedades Propriedades de Configuração>C/C++>Linha de Comando.

  3. Modifique a propriedade Opções Adicionais para definir as opções /fsanitize-coverage.

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