/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:
Abra el cuadro de diálogo Páginas de propiedades del proyecto.
Seleccione la página de propiedades Propiedades de configuración>C/C++>Línea de comandos.
Modifique la propiedad Opciones adicionales para establecer las opciones /fsanitize-coverage.
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