Visual Studio AddressSanitizer genişletilmiş işlevsellik kitaplığı (VCAsan)
Kitaplıklar Visual Studio'da VCAsan*.lib
genişletilmiş hata ayıklayıcısı IDE özellikleri uygular. Bu özellikler IDE'nin canlı hata ayıklama oturumlarında AddressSanitizer hatalarını göstermesini veya kilitlenme bilgi dökümü dosyasını meta verilerle kaydederek çevrimdışı olmasını sağlar. AddressSanitizer MSVC derleyicisi tarafından etkinleştirildiğinde kitaplık bağlanır.
VCAsan kitaplık envanteri
Çalışma zamanı seçeneği | VCAsan bağlantı kitaplığı |
---|---|
/MT |
libvcasan.lib |
/MD |
vcasan.lib |
/MTd |
libvcasand.lib |
/MDd |
vcasand.lib |
VCAsan kitaplığı özellikleri
Visual Studio IDE'de Zengin AdresSanitizer hata raporu penceresi
VCAsan kitaplığı, arabirimi işlevini __asan_set_error_report_callback
kullanarak AddressSanitizer çalışma zamanı içinde bir geri çağırma kaydeder. Bir AddressSanitizer raporu oluşturulursa, visual studio tarafından yakalanan bir özel durum oluşturma amacıyla bu geri çağırma kullanılır. Visual Studio, IDE'de kullanıcıya görüntülenen iletiyi oluşturmak için özel durum verilerini kullanır.
Not
VCAsan kitaplığı, AddressSanitizer çalışma zamanına bir geri çağırma işlevi kaydeder. Kodunuz bu kayıt işlevini ikinci kez çağırırsa, VCAsan kitaplığı geri çağırma kaydının üzerine yazar. Bu, tüm Visual Studio IDE tümleştirmesinin kaybolmasına neden olur. Varsayılan IDE kullanıcı deneyimine geri döneceksiniz. Bir kullanıcının geri aramasını kaydeden çağrısının kaybolması da mümkündür. Herhangi bir sorunla karşılaşırsanız bir hata bildirin.
AddressSanitizer hatalarını yeni bir kilitlenme bilgi dökümü dosyasında kaydetme
VCAsan kitaplığını yürütülebilir dosyanıza bağladığınızda, kullanıcılar çalışma zamanında kilitlenme dökümü oluşturmasını sağlayabilir. Ardından, tanılanan bir hata oluştuğunda AddressSanitizer çalışma zamanı bir döküm dosyası oluşturur. Bu özelliği etkinleştirmek için kullanıcı ortam değişkenini ASAN_SAVE_DUMPS
aşağıdaki gibi bir komut kullanarak ayarlar:
set ASAN_SAVE_DUMPS=MyFileName.dmp
Dosyanın Visual Studio IDE kurallarına uyması için bir .dmp
uzantısı olmalıdır. (17.7 öncesi)
için ASAN_SAVE_DUMPS
bir döküm dosyası belirtildiğinde şöyle olur: AddressSanitizer çalışma zamanı tarafından bir hata yakalanırsa, hatayla ilişkilendirilmiş meta verileri içeren bir kilitlenme dökümü dosyasını kaydeder. Visual Studio sürüm 16.9 ve sonraki sürümlerdeki hata ayıklayıcı, döküm dosyasına kaydedilen meta verileri ayrıştırabilir. Test başına ayarlayabilir ASAN_SAVE_DUMPS
, bu ikili yapıtları depolayabilir ve sonra bunları uygun kaynak dizinleme ile IDE'de görüntüleyebilirsiniz.
Visual Studio sürüm 17.7 ve üzeri aşağıdakileri destekler:
Alıntılanan dizeler artık doğru şekilde işleniyor. Önceki sürümlerde, Visual Studio içindeki ortamlarda veya PowerShell kullanırken ortam değişkenini tırnak işaretleri veya boşluklar içerecek şekilde ayarlamak beklenen döküm dosyasını oluşturamaz.
Uzantı açıkça belirtildiğinde
.dmp
(örneğin,set ASAN_SAVE_DUMPS=MyDmp.dmp
), VCAsan bunu açıkça kullanır ve döküm dosyası adına ilişkili bir işlem kimliği eklemez.Ortam değişkeninden belirtilen aynı ada sahip bir
.dmp
dosya zaten varsa, VCAsan dosya adını aşağıdaki gibi değiştirir:- Dosya adına parantez içinde bir sayı ekler. Örneğin,
Myfile (1).dmp
. - Birkaç denemeden sonra parantez içinde bir sayı ekleme benzersiz bir ad oluşturamazsa, dosya VCAsan'ın yazdıracağı geçici bir
%APPLOCAL%
yola kaydedilir. Örneğin,C:\Users\~\AppData\Local\Temp\Dump.dmp
. - Geçici bir yola kaydetme başarısız olursa bir tanılama hatası görüntülenir.
- Dosya adına parantez içinde bir sayı ekler. Örneğin,
Ayrıca bkz.
AddressSanitizer'a genel bakış
AddressSanitizer bilinen sorunları
AddressSanitizer derlemesi ve dil başvurusu
AddressSanitizer çalışma zamanı başvurusu
AddressSanitizer gölge baytları
AddressSanitizer bulut veya dağıtılmış test
AddressSanitizer hata örnekleri