Aracılığıyla paylaş


AddressSanitizer bulut veya dağıtılmış test

AddressSanitizer hatalarının ne zaman ve nerede oluştuğunda hata ayıklamanız gerekmez. Bir hata oluştuğunda AddressSanitizer'a özgü tüm bağlamı depolayan bir kilitlenme dökümü oluşturmak için çalışma zamanını yapılandırın. Ardından bu kilitlenme dökümünü hata ayıklama için başka bir bilgisayara gönderin. Çevrimdışı hata ayıklama, bulutta veya dağıtılmış testlerde AddressSanitizer çalıştırılırken kritik bir zaman ayırıcı olabilir. Hatanın oluştuğu test veya üretim altyapısında dökümü oluşturabilir ve daha sonra geliştirici bilgisayarınızda hata ayıklayabilirsiniz.

Visual Studio hata ayıklayıcısı tam olarak tanılanmış AddressSanitizer hataları sağlar. Testleri yeniden çalıştırmak, büyük veri kümelerini kopyalamak, kayıp verileri keşfetmek veya çevrimdışı olan test makinelerini bulmak zorunda kalmadan bu hataları görüntüleyebilirsiniz. Yalnızca kilitlenme bilgi dökümünü yüklemeniz gerekir.

Aşağıdaki ortam değişkeni ayarlanarak AddressSanitizer hatalarında kilitlenme dökümleri oluşturulur:

set ASAN_SAVE_DUMPS=MyFileName.dmp

Dekont

Visual Studio adlandırma kurallarına uymak için dosya adının bir son eki .dmp olmalıdır.

Bu döküm dosyası , başka bir makinede daha sonraki bir tarihte Visual Studio kullanılarak görüntülenebilir.

Visual Studio, hata bilgilerini özgün kaynak kodu bağlamında görüntüleyebilir. Bunu yapmak için Visual Studio hata ayıklama sembolleri ve dizine alınan kaynak kodu gerektirir. En iyi hata ayıklama deneyimi için, bu ikili dosyaları üretmek için kullanılan EXE, PDB ve kaynak kodu eşleşmelidir.

Kaynakları ve simgeleri depolama hakkında daha fazla bilgi için kaynak ve simgeler bölümüne bakın. Uygulama ayrıntıları ve ayrıntılı denetim hakkında bilgi için bkz . hata ayıklayıcı tümleştirmesi.

Örnek - derleme, test etme ve analiz etme

Üç makineyi düşünün: A, B ve C. Derlemeler B makinesinde yapılır, testler C makinesinde çalıştırılır ve A makinesindeki hataları analiz edebilirsiniz. Hatalar kaynak kodunuzdaki kaynak satır ve sütun numaralarına göre bildirilir. Kaynak kodun tam sürümü kullanılarak üretilen PDB dosyasında çağrı yığınını bir dizi simgeyle birlikte görebilirsiniz.

Aşağıdaki adımlar, bir .dmp dosyasının oluşturulmasına yol açan yerel veya dağıtılmış senaryolar ve bu AddressSanitizer döküm dosyasını çevrimdışı görüntülemeye yöneliktir.

Yerel olarak .dmp oluşturma

  • Derleme
  • Yürütülebilir dosyayı test edin
  • Oluşturulan bir .dmp dosyasını derleme dizinine kopyalama
  • Aynı dizinde eşleştirilmiş .pdb ile .dmp dosyasını açın

Dağıtılmış sistemde .dmp oluşturma

  • Kaynak dizin oluşturma veri blokları için PDB'yi derleme ve işleme sonrası
  • Atomik çiftini (.exe, .pdb) test makinesine kopyalayın ve testleri çalıştırın
  • (.pdb, .dmp) atomik çiftlerini hata raporlama veritabanına yazma
  • Visual Studio aynı dizinde eşleştirilmiş .pdb ile bir .dmp dosyası açar

Dekont

Analiz için kullandığınız Visual Studio 2019 makinesinin GitHub'a veya dizine alınan kaynağınızın depolandığı iç \\Machine\share makineye erişimi olmalıdır.

AddressSanitizer .dmp dosyalarını görüntüleme

  1. Hata ayıklayıcı IDE'nin PDB'nizi ve kaynak dosyalarınızı bulabileceğinden emin olun.

  2. Visual Studio'yu açın ve Kod olmadan devam et'i seçin. Ardından Dosya>>iletişim kutusunu açmak için Dosya Aç'ı seçin. Dosya adı son ekinin .dmp olduğundan emin olun.

    Screenshot of the File Open File menu in Visual Studio.

    Burada gösterilen ekranda simgelere ve kaynağa IDE erişimini etkinleştirmek için bir adım daha gerekir.

  3. Simge yollarını ayarlayın ve ardından Yalnızca Yerel Ile Hata Ayıkla'yı seçin.

    Screenshot of the Minidump Summary display in Visual Studio.

Bu ekran görüntüsü, kaynaklar ve AddressSanitizer meta verilerinin yüklendiği son yüklenen döküm dosyasını gösterir.

Screenshot of the debugger showing source files and AddressSanitizer metadata.

Kaynak ve simgeler

Kaynak sunucu, istemcinin uygulama oluşturmak için kullanılan kaynak dosyaların tam sürümünü almasını sağlar. Yürütülebilir dosya veya DLL'nin kaynak kodu zaman içinde ve sürümler arasında değişebilir. Uygulamanın belirli bir sürümünü oluşturan kaynak koduna bakmak için bunu kullanabilirsiniz.

Bir EXE dosyasını PDB dosyasıyla ayıklarken, hata ayıklayıcı ekli kaynak sunucu veri bloğunu kullanarak kaynak denetiminden uygun dosyaları alabilir. Derleyici seçeneği tarafından /Zi PDB'ye eklenen tam adlarla eşlenmiş dosyaları otomatik olarak yükler.

Kaynak sunucuyu kullanmak için uygulamanın PDB dosyanıza veri srcsrv bloğu yazmak için kullanılarak pdbstr.exe "kaynak dizini oluşturulmuş" olması gerekir. Daha fazla bilgi için Kaynak sunucu ve kaynak dizin oluşturmanın Veri Bloğu bölümüne bakın. Kaynakları dizine ekleme ve sembol yayımlama adımlarını ve hata ayıklayıcı için sembolleri ve kaynak kodunu belirtmeyi de yararlı bulacaksınız.

Dış belgeler için bkz:

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 hata ayıklayıcısı tümleştirmesi
AddressSanitizer hata örnekleri