/fsanitize-coverage
(Dezenfektan kapsamını yapılandırma)
Derleyici /fsanitize-coverage
seçenekleri, derleyiciye kullanıcı tanımlı işlevlerin çağrıldığı çeşitli izleme noktaları eklemesini sağlar. Bu seçenekler, OneFuzz gibi kullanan /fsanitize=fuzzer
senaryolarda kullanışlıdır. Daha fazla bilgi için OneFuzz belgelerine ve OneFuzz GitHub projesine bakın.
Sözdizimi
/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
Açıklamalar
Deneysel /fsanitize-coverage
derleyici seçenekleri, hangi derleyici tarafından sağlanan izlemenin oluşturulduğunu değiştirmek için kod kapsamı desteği ve çeşitli seçenekler sunar. Seçenek belirtildiğinde /fsanitize=fuzzer
tüm bu seçenekler otomatik olarak ayarlanır. seçeneği, /fsanitize=fuzzer
bu seçeneklerde belirtilen aynı izleme noktalarını ve geri çağırmaları gerektirir.
Seçenekler /fsanitize-coverage
virgülle ayrılmış söz dizimine izin vermez, örneğin: /fsanitize-coverage=edge,inline-8bit-counters,trace-cmp,trace-div
. Bu seçenekleri ayrı ayrı belirtin.
Seçenekler /fsanitize-coverage
Visual Studio 2022 sürüm 17.0'da kullanıma sunulmuştur.
Kod kapsamı
Derleyici /fsanitize-coverage=edge
seçeneği, yedekli olmayan tüm kenarlar boyunca kod kapsamı izlemesini etkinleştirir. Başka bir seçenek tarafından zaten sağlanmış veya örtükse bu seçeneği devre dışı bırakmak için kullanın /fno-sanitize-coverage=edge
.
Satır içi sayaçlar
Derleyici /fsanitize-coverage=inline-8bit-counters
seçeneği, derleyiciye ilgili her kenarda satır içi sayaç artışı eklemesini belirtir. Bu seçenek ayrıca uygulamanız gereken bir çağrı extern "C" void __sanitizer_cov_8bit_counters_init(uint8_t *start, uint8_t *stop)
ekler. Bağımsız değişkenler, oluşturulan tüm 8 bit sayaçları içeren bir dizinin başlangıcına ve sonuna karşılık gelir. Başka bir seçenek tarafından zaten sağlanmış veya örtükse bu seçeneği devre dışı bırakmak için kullanın /fno-sanitize-coverage=inline-8bit-counters
.
İzleme karşılaştırmaları
Derleyici /fsanitize-coverage=trace-cmp
seçeneği, derleyiciye aşağıdaki işlevlere çağrılar eklemesini sağlar:
// 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);
Başka bir seçenek tarafından zaten sağlanmış veya örtükse bu seçeneği devre dışı bırakmak için kullanın /fno-sanitize-coverage=trace-cmp
.
Bölmeleri izleme
Derleyici /fsanitize-coverage=trace-div
seçeneği, derleyiciye aşağıdaki işlevlere çağrılar eklemesini sağlar:
// Before a division instruction of the stated size.
void __sanitizer_cov_trace_div4(uint32_t Val);
void __sanitizer_cov_trace_div8(uint64_t Val);
Başka bir seçenek tarafından zaten sağlanmış veya örtükse bu seçeneği devre dışı bırakmak için kullanın /fno-sanitize-coverage=trace-div
.
Gelişmiş derleyici seçeneklerini ayarlamak için
Projenizin Özellik Sayfaları iletişim kutusunu açın.
Yapılandırma Özellikleri>C/C++>Komut Satırı özellik sayfasını seçin.
/fsanitize-coverage seçeneklerini ayarlamak için Ek Seçenekler özelliğini değiştirin.
Değişikliklerinizi kaydetmek için Tamam'ı veya Uygula'yı seçin.
Ayrıca bkz.
MSVC derleyici seçenekleri
MSVC derleyicisi komut satırı söz dizimi
/fsanitize
(Dezenfektanları Etkinleştir)
AddressSanitizer derlemesi ve dil başvurusu