/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
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.
Baca juga
Opsi pengkompilasi MSVC
Sintaks baris perintah pengkompilasi MSVC
/fsanitize
(Aktifkan Sanitizer)
Referensi bahasa dan build AddressSanitizer
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk