Compartir vía


/fsanitize-coverage (Configuración de la cobertura del saneador)

Las opciones del compilador /fsanitize-coverage indican al compilador que agregue varios tipos de puntos de instrumentación en los que se llama a las funciones definidas por el usuario. Estas opciones son útiles para escenarios de aproximación que usan /fsanitize=fuzzer, como OneFuzz. Para más información, consulte la documentación de OneFuzz y el proyecto de GitHub de OneFuzz.

Sintaxis

/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

Comentarios

Las opciones del compilador experimental /fsanitize-coverage ofrecen compatibilidad con la cobertura de código y varias opciones para modificar qué instrumentación proporcionada por el compilador se genera. Todas estas opciones se establecen automáticamente cuando se especifica la opción /fsanitize=fuzzer. La opción /fsanitize=fuzzer requiere los mismos puntos de instrumentación y devoluciones de llamada mencionados en estas opciones.

Las opciones /fsanitize-coverage no permiten la sintaxis separada por comas, por ejemplo: /fsanitize-coverage=edge,inline-8bit-counters,trace-cmp,trace-div. Especifique estas opciones individualmente.

Las opciones /fsanitize-coverage están disponibles a partir de la versión 17.0 de Visual Studio 2022.

Cobertura de código

La opción del compilador /fsanitize-coverage=edge habilita la instrumentación de cobertura de código en todos los bordes no redundantes. Use /fno-sanitize-coverage=edge para deshabilitar esta opción si ya está proporcionada o implícita por otra opción.

Contadores insertados

La opción del compilador /fsanitize-coverage=inline-8bit-counters indica al compilador que agregue un incremento de contador en línea en cada borde pertinente. Esta opción también agrega una llamada a extern "C" void __sanitizer_cov_8bit_counters_init(uint8_t *start, uint8_t *stop) que debe implementar. Los argumentos corresponden al inicio y al final de una matriz que contiene todos los contadores de 8 bits creados. Use /fno-sanitize-coverage=inline-8bit-counters para deshabilitar esta opción si ya está proporcionada o implícita por otra opción.

Comparaciones de seguimiento

La opción del compilador /fsanitize-coverage=trace-cmp indica al compilador que inserte llamadas a las funciones siguientes:

// 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 deshabilitar esta opción si ya está proporcionada o implícita por otra opción.

Divisiones de seguimiento

La opción del compilador /fsanitize-coverage=trace-div indica al compilador que inserte llamadas a las funciones siguientes:

// 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 deshabilitar esta opción si ya está proporcionada o implícita por otra opción.

Para establecer las opciones avanzadas del compilador, siga estos pasos:

  1. Abra el cuadro de diálogo Páginas de propiedades del proyecto.

  2. Seleccione la página de propiedades Propiedades de configuración>C/C++>Línea de comandos.

  3. Modifique la propiedad Opciones adicionales para establecer las opciones /fsanitize-coverage.

  4. Haga clic en Aceptar o en Aplicar para guardar los cambios.

Consulte también

Opciones del compilador de MSVC
Sintaxis de línea de comandos del compilador de MSVC
/fsanitize (Habilitar correctores)
Referencia de lenguaje y compilación de AddressSanitizer