/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=fuzzersenaryolarda 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

  1. Projenizin Özellik Sayfaları iletişim kutusunu açın.

  2. Yapılandırma Özellikleri>C/C++>Komut Satırı özellik sayfasını seçin.

  3. /fsanitize-coverage seçeneklerini ayarlamak için Ek Seçenekler özelliğini değiştirin.

  4. 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