Bagikan melalui


/fsanitize-coverage (Mengonfigurasi cakupan sanitizer)

Opsi /fsanitize-coverage kompilator menginstruksikan pengkompilasi untuk menambahkan berbagai jenis titik instrumentasi tempat fungsi yang ditentukan pengguna dipanggil. Opsi ini berguna untuk skenario fuzzing yang menggunakan /fsanitize=fuzzer, seperti OneFuzz. Untuk informasi selengkapnya, lihat dokumentasi OneFuzz dan proyek OneFuzz GitHub.

Sintaks

/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

Keterangan

Opsi kompilator eksperimental /fsanitize-coverage menawarkan dukungan cakupan kode dan berbagai opsi untuk memodifikasi instrumentasi yang disediakan kompilator mana yang dihasilkan. Semua opsi ini secara otomatis diatur ketika /fsanitize=fuzzer opsi ditentukan. Opsi ini /fsanitize=fuzzer memerlukan titik instrumentasi dan panggilan balik yang sama yang disebutkan dalam opsi ini.

Opsi /fsanitize-coverage tidak mengizinkan sintaks yang dipisahkan koma, misalnya: /fsanitize-coverage=edge,inline-8bit-counters,trace-cmp,trace-div. Tentukan opsi ini satu per satu.

Opsi /fsanitize-coverage tersedia dimulai di Visual Studio 2022 versi 17.0.

Cakupan kode

Opsi /fsanitize-coverage=edge kompilator memungkinkan instrumentasi cakupan kode di semua tepi yang tidak berlebihan. Gunakan /fno-sanitize-coverage=edge untuk menonaktifkan opsi ini jika sudah disediakan atau disiratkan oleh opsi lain.

Penghitung sebaris

Opsi /fsanitize-coverage=inline-8bit-counters kompilator menginstruksikan pengkompilasi untuk menambahkan kenaikan penghitung sebaris di setiap tepi yang relevan. Opsi ini juga menambahkan panggilan ke extern "C" void __sanitizer_cov_8bit_counters_init(uint8_t *start, uint8_t *stop) yang harus Anda terapkan. Argumen sesuai dengan awal dan akhir array yang berisi semua penghitung 8-bit yang dibuat. Gunakan /fno-sanitize-coverage=inline-8bit-counters untuk menonaktifkan opsi ini jika sudah disediakan atau disiratkan oleh opsi lain.

Perbandingan jejak

Opsi /fsanitize-coverage=trace-cmp pengkompilasi menginstruksikan pengkompilasi untuk menyisipkan panggilan ke fungsi berikut:

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

Gunakan /fno-sanitize-coverage=trace-cmp untuk menonaktifkan opsi ini jika sudah disediakan atau disiratkan oleh opsi lain.

Melacak pembagian

Opsi /fsanitize-coverage=trace-div pengkompilasi menginstruksikan pengkompilasi untuk menyisipkan panggilan ke fungsi berikut:

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

Gunakan /fno-sanitize-coverage=trace-div untuk menonaktifkan opsi ini jika sudah disediakan atau disiratkan oleh opsi lain.

Untuk mengatur opsi pengkompilasi tingkat lanjut

  1. Buka kotak dialog Halaman Properti proyek Anda.

  2. Pilih halaman properti Properti>Konfigurasi C/C++>Baris Perintah.

  3. Ubah properti Opsi Tambahan untuk mengatur opsi /fsanitize-coverage.

  4. Pilih OK atau Terapkan untuk menyimpan perubahan Anda.

Baca juga

Opsi pengkompilasi MSVC
Sintaks baris perintah pengkompilasi MSVC
/fsanitize (Aktifkan Sanitizer)
Referensi bahasa dan build AddressSanitizer