Profil oluşturma hatalarını giderme ve sorunları düzeltme

Bu makalede, Visual Studio'da Performans Profili Oluşturucu'nun kullanılmasını veya yeterli veri alınmasını engelleyebilecek en yaygın hatalardan bazıları için çözümler sağlanmaktadır.

Sonuç yok

Hata: "Geçerli filtre kümesinde veri yok"

Bir diagsession dosyasını açarken, izlemenin anlaşılmasını kolaylaştırmak için yerel kodu gizleme veya kullanıcı dışı kodu gizleme gibi belirli filtreler uygulanır. Ayrıca, gösterilen verileri daha da daraltan zaman seçimi ve iş parçacığı gibi uygulanabilecek başka filtreler de vardır. Bu filtreler gösterilecek veri kalmayacak şekilde uygulanırsa bu uyarıyı görürsünüz.

Nasıl düzeltilir?

  • Zaman seçiminizde veri olduğundan emin olun. Verilerin üzerindeki grafikte zaman seçiminizi değiştirdiyseniz, seçimi sıfırlamak için Seçimi Temizle'yi seçin.
  • Ardından, hala veri yoksa, ilgili açılan listelerde tüm kategorilerin ve iş parçacıklarının etkinleştirildiğinden emin olun.
  • Profil oluşturduğunuz uygulama yerel kodsa, Ayarlar açılan listesinde Yerel Kodu Göster seçeneğini etkinleştirdiğinizden emin olun.
  • Hala veriniz yoksa, topladığınız izleme büyük olasılıkla herhangi bir verinin mevcut olmaması için çok kısadır. Veri topladığınız programın çok hızlı (bir saniyeden kısa) tamamlanmadığından emin olun.

Ayrıca bkz: Dış Kodu Göster

Sonuçların tamamlanması uzun sürüyor

Toplamadan sonra yığını analiz etmek yavaş yükleniyor gibi görünüyorsa, bekleme süresi sorunlarını çözmeye yardımcı olabilecek aşağıdaki olası çözümlere bakın.

Nasıl düzeltilir Bellek yoğunluklu uygulamalardan anlık görüntüleri analiz etmeye çalışırken bazen daha uzun sürebilir, ancak Visual Studio'nun daha yeni bir sürümüne yükseltmek analiz bekleme süresini kısaltmalıdır. Yükseltmeden sonra bu sorun kalıcıysa, araçta bir performans hatası olabilir. Bir geri bildirim bileti oluşturun ve oluşturulan diagsession dosyasını paylaşın. Dosyasıyla verilerin neden yavaş analiz edildiğine karar verebilir ve performans geliştirmeleri yapabilecekleri yerleri bulabiliriz.

Geri Bildirim biletinde bir izleme ve yığın dökümü dosyası sağladığından emin olun.

Ayrıca bkz:

"Bu diagsession için bildirim dosyası oluşturulamadı" veya "hata, tanılama için bildirim dosyası oluşturulamadı, Visual Studio bu oturumu yeniden açamıyor".

Bu sorun, veri toplamak için durdurulduktan sonra analiz edilecek ve görüntülenecek bellek anlık görüntüsü verileri hazırlanırken bir sorun olduğu anlamına gelir. Koleksiyon aracılarından doğru bilgilerin alınamamasından gerçek veri işlemeye kadar sorunun ortaya çıkmasının birden çok olası nedeni vardır. Bu nedenle, daha fazla günlüğe kaydetmeden sorunun ne olduğunu tanılamak mümkün olmayacaktır.

Sorunu tanılayabilmemiz için ek günlüğe kaydetme bilgileriyle Geri Bildirim biletinizi yanıtlamayı düzeltme . Yükseltilmiş bir komut isteminden aşağıdaki komutları çalıştırarak günlük bilgilerini alabilirsiniz:

reg add HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\DiagnosticsHub /v LogLevel /t REG_SZ /d All /reg:32
reg add HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\DiagnosticsHub /v LogDirectory /t REG_SZ /d [directory of your choice] /reg:32

Bu komutları çalıştırdıktan sonra Visual Studio'yu başlatın, senaryonuzu yeniden oluşturun, Visual Studio'yu kapatın, ardından seçtiğiniz DiagnosticsHub günlük dizinini sıkıştırıp bu bilete ekleyin. Bu noktadan sonra neler olduğunu daha iyi tanılayabilmeliyiz.

Günlüğü biletinize ekledikten sonra günlüğü devre dışı bırakmak için şu komutları çalıştırın:

reg delete HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\DiagnosticsHub /f /v LogLevel /reg:32
reg delete HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\DiagnosticsHub /f /v LogDirectory /reg:32

Hata: "Kaynak bilgileri kullanılamıyor."

Kaynak bilgilerini görüntülemek için, toplama zamanından itibaren KULLANıLABILIR PDB'lere sahip olmanız gerekir. Bu nedenle, örneğin bir CPU kullanımı diagsession dosyası toplar, kodunuzda bazı değişiklikler yapar, yeniden derler (eski PBD'nin yerini alır) ve ardından .diagsession dosyasını yeniden açarsanız, güncelleştirdiğiniz kodunuzun modüllerine ilişkin kaynak bilgilerini muhtemelen göremezsiniz.

Nasıl düzeltilir Bu sorunun en kolay geçici çözümü, değişiklik yaptıktan sonra yeni bir aksan toplamaktır. Bu şekilde PDB'lerinizin güncel olduğundan emin olabilirsiniz.

Hata: "Bellek analizi bir iç hata nedeniyle başarısız oldu."

Uzun bir bellek profili oluşturma oturumundan sonra, sonucu analiz etmeye yönelik tüm girişimler hatayla karşılanır.

Bellek aracı tarafından yakalanan anlık görüntü bilgileriyle koleksiyon aracısının anlık görüntüsü arasında bir uyuşmazlık oluştu. Bu sonuç, bellek aracının yerel anlık görüntü için yığın durum dosyasını bulamadığı anlamına gelir. Veya bu sonuç, bellek aracının GCStats'ı almak için anlık görüntünün GC başlangıç zamanıyla diagsession dosyasında kayıtlı olanla eşleşmemesidir.

Nasıl düzeltilir Bu sorun, araçta 17.3'te düzeltılan bir hatadan kaynaklandı. Daha sonraki bir sürüme yükseltmek sorunu çözmelidir. Yükseltmeden sonra sorun hala kalıcıysa bir geri bildirim bileti oluşturun ve anahtara ekleyin:

  • Diagsession dosyası
  • Visual Studio'nun mini kuklası
  • Alınan bellek anlık görüntülerinin ekran görüntüsü.

Bu sorun için geçici bir çözüm yoktur ve profil oluşturma oturumunun yeniden başlatılması gerekir.

Hata: "X tanılama olayı bırakıldı, rapordaki bazı bilgiler eksik veya yanlış olabilir"

Bazen veri yakalama sırasında, sonuçta elde edilen profil oluşturma raporunun yanlış veya kullanılamaz hale getirmesine neden olabilecek olaylar bırakılabilir. Bırakılan olaylar birçok farklı nedenden dolayı gerçekleşebilir, ancak öncelikle sistem gelen hızdan daha hızlı olayları diske boşaltamadığında oluşur.

Nasıl düzeltilir Bırakılan olayları azaltmaya yardımcı olmak için profil oluştururken diğer disk ve CPU yoğunluklu işlemleri kapatabilirsiniz. Sistem, bu işlemleri kapatarak gelen olayları boşaltmak için daha fazla kaynak ayırabilir. Ayrıca CPU Kullanımı aracı ve .NET Ayırma aracı gibi bu yapılandırma ayarlarını destekleyen araçlardaki örnekleme sıklıklarını azaltmayı deneyebilir ve böylece ek yükü azaltabilirsiniz.

Hata: ETW kaynakları tükendi

Visual Studio profil oluşturucu, performans bilgilerini toplamak için Windows için Olay İzleme'yi (ETW) kullanır. Bir sistemde kullanılabilecek sınırlı sayıda ETW oturumu vardır ve tüm oturumlar zaten kullanılıyorsa şu hatayı alırsınız: ETW resources have been exhausted. Bu oturumlar SysInternals araç paketi, diğer profil oluşturucular ve diğer tanılama araçları gibi diğer programlar tarafından kullanılır. Bu sorunu aşağıdakilerden birini yaparak çözebilirsiniz:

  • Kaynakları boşaltmak için oturumları kullanan programları kapatma veya

  • Yükseltilmiş bir komut isteminden aşağıdakileri çalıştırıp yeniden başlatarak daha fazla kaynak ayırma:

    reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\WMI" /v EtwMaxLoggers /t REG_DWORD /d 128
    

    Bu komutu çalıştırmak, varsayılan oturum sayısını 64'ten 128'e yükseltir (256, bir sistemde izin verilen en fazla oturum sayısıdır).

Hata: ARM64 VM'de CPU Kullanımı aracı çalışmıyor

Visual Studio profil oluşturucu, performans bilgilerini toplamak için Windows için Olay İzleme'yi (ETW) kullanır. Şu anda, BIR Sanal Makinede (VM) çalışırken ARM64 için Windows'ta ETW kullanarak profil örnekleri toplanıyor. Bu sınırlamayı geçici olarak çözmek için gerçek bir ARM64 cihazında CPU Kullanımı aracını veya zamanlama bilgilerini yakalamak için İzleme aracını kullanabilirsiniz.

Hata: Sunucu GC etkinken Bellek Kullanımı aracı .NET 7 ve .NET Runtime 8.0.0-8.0.1 üzerinde çalışmıyor

.NET 7 çalışma zamanıyla sunulan ve .NET 8 çalışma zamanı sürümleri 8.0.0 ve 8.0.1'e yayılan bir sorun nedeniyle, sunucu atık toplama kullanılırken nesneleri listelemek mümkün değildir. Sunucu çöp toplama, ASP.NET Core uygulamaları için varsayılan olarak etkindir.

Nasıl düzeltilir?

Bu soruna geçici bir çözüm olarak:

  • Anlık görüntü alırken veya uygulamanızın dökümünü toplarken sunucu çöp toplamayı devre dışı bırakın.
  • .NET Çalışma Zamanı'nın etkilenmemiş bir sürümünü kullanın.

Ayrıca bkz: