Partager via


/fsanitize-coverage (Configurer la couverture de l’assainissement)

Les /fsanitize-coverage options du compilateur indiquent au compilateur d’ajouter différents types de points d’instrumentation où les fonctions définies par l’utilisateur sont appelées. Ces options sont utiles pour les scénarios de fuzzing qui utilisent /fsanitize=fuzzer, comme OneFuzz. Pour plus d’informations, consultez la documentation OneFuzz et le projet GitHub OneFuzz.

Syntaxe

/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

Notes

Les options de compilateur expérimentales /fsanitize-coverage offrent une prise en charge de la couverture du code et différentes options pour modifier l’instrumentation fournie par le compilateur générée. Toutes ces options sont automatiquement définies lorsque l’option /fsanitize=fuzzer est spécifiée. L’option /fsanitize=fuzzer nécessite les mêmes points d’instrumentation et rappels mentionnés dans ces options.

Les /fsanitize-coverage options n’autorisent pas la syntaxe séparée par des virgules, par exemple : /fsanitize-coverage=edge,inline-8bit-counters,trace-cmp,trace-div. Spécifiez ces options individuellement.

Les /fsanitize-coverage options sont disponibles à partir de Visual Studio 2022 version 17.0.

Couverture du code

L’option /fsanitize-coverage=edge du compilateur active l’instrumentation de couverture du code le long de tous les bords non redondants. Permet /fno-sanitize-coverage=edge de désactiver cette option si elle est déjà fournie ou implicite par une autre option.

Compteurs inline

L’option /fsanitize-coverage=inline-8bit-counters du compilateur indique au compilateur d’ajouter un incrément de compteur inline sur chaque arête appropriée. Cette option ajoute également un appel à extern "C" void __sanitizer_cov_8bit_counters_init(uint8_t *start, uint8_t *stop) ce que vous devez implémenter. Les arguments correspondent au début et à la fin d’un tableau qui contient tous les compteurs 8 bits créés. Permet /fno-sanitize-coverage=inline-8bit-counters de désactiver cette option si elle est déjà fournie ou implicite par une autre option.

Comparaisons de traces

L’option /fsanitize-coverage=trace-cmp du compilateur indique au compilateur d’insérer des appels aux fonctions suivantes :

// 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);

Permet /fno-sanitize-coverage=trace-cmp de désactiver cette option si elle est déjà fournie ou implicite par une autre option.

Divisions de trace

L’option /fsanitize-coverage=trace-div du compilateur indique au compilateur d’insérer des appels aux fonctions suivantes :

// Before a division instruction of the stated size.
void __sanitizer_cov_trace_div4(uint32_t Val);
void __sanitizer_cov_trace_div8(uint64_t Val);

Permet /fno-sanitize-coverage=trace-div de désactiver cette option si elle est déjà fournie ou implicite par une autre option.

Pour définir les options avancées du compilateur

  1. Ouvrez la boîte de dialogue Pages de propriétés de votre projet.

  2. Sélectionnez la page de propriétés Propriétés de configuration>C/C++>Ligne de commande.

  3. Modifiez la propriété Options supplémentaires pour définir les options de couverture /fsanitize.

  4. Choisissez OK ou Appliquer pour enregistrer vos modifications.

Voir aussi

Options du compilateur MSVC
Syntaxe de ligne de commande du compilateur MSVC
/fsanitize (Activer les assainisseurs)
Référence de build et de langage AddressSanitizer