Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
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
Buka kotak dialog Halaman Properti proyek Anda.
Pilih halaman properti Properti>Konfigurasi C/C++>Baris Perintah.
Ubah properti Opsi Tambahan untuk mengatur opsi /fsanitize-coverage.
Pilih OK atau Terapkan untuk menyimpan perubahan Anda.
Lihat juga
Opsi pengkompilasi MSVC
Sintaks baris perintah pengkompilasi MSVC
/fsanitize (Aktifkan Sanitizer)
Referensi bahasa dan build AddressSanitizer