Aracılığıyla paylaş


.NET uygulamanızı Visual Studio'da izleme (C#, C++, Visual Basic, F#)

Visual Studio 2022 sürüm 17.5'in yayımlanmasıyla birlikte, yeni dinamik İzleme aracını kullanabilirsiniz. Bu araç, işlevlerinizin tam olarak kaç kez çağrıldığını ve İzleme aracının önceki sürümünden daha hızlı olduğunu gösterir. Bu araç, PDB'lere gerek kalmadan .NET Core araç desteğini destekler. Visual Studio 2022 sürüm 17.6 Preview 2'den başlayarak araç C/C++ sürümünü de destekler.

Araç CPU Kullanımı aracına benzer ancak CPU kullanımı yerine duvar saati süresine bağlıdır. Bu, CPU Kullanımı aracının aksine, kilitleri beklerken harcanan zaman gibi engellenmiş sürelerin araç izlemesinde gösterileceği anlamına gelir. İzleme aracını etkili bir şekilde kullanmayı öğrenme hakkında ek bilgi için bkz. Enstrümantasyon Araçlarına Genel Bakış ve Örnek Olay İncelemesi: Bir Performans Sorununu Yalıtma.

Uygulamanızı izleme

  1. Visual Studio projesinde çözüm yapılandırmasını Yayın olarak ayarlayın ve dağıtım hedefini seçin.

    Dağıtım hedefi genellikle yerel dağıtımı gösteren proje adıyla eşleşir.

  2. Visual Studio'da performans profil oluşturucuyu açmak için Alt+F2 (veya Hata Ayıklama > Performans Profili Oluşturucu) seçin.

  3. Enstrümantasyon onay kutusunu seçin.

    İzleme aracının seçili olduğunu gösteren ekran görüntüsü.

    Profil oluşturucuyu başlatmadan önce Koleksiyon duraklatılmış başlat seçeneğini etkinleştirirseniz, tanılama oturumu görünümünde kayıt düğmesini seçene kadar veriler toplanmaz.

    Not

    Araç seçilemiyorsa, bazı araçların tek başına çalışması gerektiğinden diğer tüm araçların onay kutusunu temizleyin. Araçları birlikte çalıştırma hakkında daha fazla bilgi edinmek için bkz. Birden çok profil oluşturucu aracını aynı anda kullanma.

    Araç hala kullanılamıyorsa projenizin önceki gereksinimleri karşılayıp karşılamadığını denetleyin. En doğru verileri yakalamak için projenizin Yayın modunda olduğundan emin olun.

    CMake gibi bazı proje türleri için başlangıç hedefini Yürütülebilir olarak ayarlamanız gerekir. Daha fazla bilgi için bkz . Projem için hangi araçlar destekleniyor?.

  4. Aracı çalıştırmak için Başlat düğmesini seçin.

  5. Programınızda enstrüman eklemek istediğiniz öğeleri seçin.

    Enstrüman eklemek için öğeleri seç iletişim kutusunu gösteren ekran görüntüsü.

    Visual Studio 2022 sürüm 17.11'den başlayarak, profil oluşturucu seçilen öğeleri bir sonraki profil oluşturma çalıştırması için kalıcı hale alır.

    Visual Studio 2022 sürüm 17.13 Önizleme 1'den itibaren, C++ için araçlandıracağınız öğeleri seçebilirsiniz.

  6. tamam seçin.

  7. Araç çalışmaya başladıktan sonra uygulamanızda profil oluşturmanızı istediğiniz senaryoyu inceleyin. Ardından Toplamayı durdur'u seçin veya verilerinizi görmek için uygulamayı kapatın.

Enstrümantasyon raporunu analiz et

Profil oluşturma verileriniz Visual Studio'da görünür.

.NET İzleme verilerini gösteren ekran görüntüsü .

Araç Verileri Görünümü, işlevlerin en uzun çalışma süresine göre sıralandığı bir liste gösterir ve en uzun çalışan işlev en üstte, Üst İşlevlerbölümünde yer alır. Sık Erişimli Yol bölümünde, en çok zamanı kullanan işlevler için çağrı yığını gösterilir. Bu listeler performans sorunlarının yaşandığı işlevlerde size yol gösterebilir.

İlgilendiğiniz bir işleve tıkladığınızda daha ayrıntılı bir görünüm görürsünüz.

Kullanılabilir veriler CPU Kullanımı aracına benzer, ancak cpu kullanımı yerine duvar saati zamanına ve çağrı sayılarına dayanır.

İçgörüleri analiz etme

En İyi İçgörüler bölümünde herhangi bir içgörü görünürse, belirtilen sorun hakkında daha fazla bilgi edinmek için sağlanan bağlantıyı kullanın. Daha fazla bilgi için bkz. CPU içgörüleri, ancak İzleme aracıyla ilgili bilgilerin CPU kullanımına değil duvar saati zamanına özgü olduğunu unutmayın.

Yapay zeka yardımı alma

Copilot kullanıyorsanız en iyi içgörülere bakarken yapay zeka yardımı alabilirsiniz. Copilot, belirli performans içgörüleri kümesiyle ilgili bilgiler ve içgörüler sağlar. Copilot ile kodunuzda tanımlanan sık erişimli yollardaki işlevler hakkında sorular da sorabilirsiniz. Bu da daha verimli veya uygun maliyetli kod oluşturmanıza yardımcı olabilir.

Copilot'a Sor düğmesi Copilot'a Sor düğmesinin ekran görüntüsü. Belirli bir performans içgörüleri tanımlanmasa bile görüntülenir. Copilot'tan öğrenmek ve soru sormaya başlamak için Copilot'a sorun'ı seçin.

Enstrümantasyon ayrıntılı raporlarını analiz etme

İzleme raporunun ayrıntılı analizi için önce ayrıntılı rapor görünümlerinden birini açın:

  1. Raporun özet sayfasında Ayrıntıları aç'a tıklayın veya İşlevler görünümünü açmak için en önemli işlevlerden birini seçin.

    Ayrıntıları aç bağlantısını gösteren ekran görüntüsü.

  2. Geçerli Görünüm listesinden ayrıntılı rapor görünümlerinden birini seçebilirsiniz.

    Ayrıntılı raporların listesini gösteren ekran görüntüsü.

Aşağıdaki tabloda ayrıntılı görünümlerin bir açıklaması sağlanmaktadır.

Görüntüle Açıklama
Arayan/Aranan Ayrıntılı görünüm: Belirli bir işlevde harcanan zaman, onu çağıran işlevler ve çağırdığı işlevler. Performans verileri, veri toplama dönemi için toplanır. Çağrı yolundan geçmek için çağıran işlevleri ve çağrılan işlevleri seçebilirsiniz.
Çağrı ağacı İşlev çağrı yolunun hiyerarşik görünümü. En çok zaman alan çağrı yollarını (sık erişimli yol) tanımlamak için kullanılır.
Modül Tek tek modüllerde harcanan ve veri toplama dönemi boyunca toplanan zamanı görüntüleme. Yüksek çağrı sayısı ve/veya performans sorunlarının birleşiminden kaynaklanan performans sorunları olabilecek modülleri tanımlamak için kullanılır.
Işlev Veri toplama dönemi boyunca toplanan tek tek işlevlerde harcanan sürenin görünümü. Yüksek çağrı sayısı ve/veya performans sorunlarının birleşiminden kaynaklanan performans sorunları olabilecek işlevleri tanımlamak için kullanılır.
Alev grafiği Alev grafiği görselleştirmesinde işlev çağrı yolunun hiyerarşik görünümü. En çok zaman alan çağrı yollarını (sık erişimli yol) tanımlamak için kullanılır.

Arayan/aranan dışındaki tüm görünümlerde, tanı raporu, en yüksekten en düşüğe doğru Toplam [birim, %]şeklinde sıralanır. Sütun başlıklarını seçerek sıralama düzenini veya sıralama sütununu değiştirin. İlgilendiğiniz bir işleve çift tıklayabilir ve işlevin kaynağını ve bu işlevde zamanın nereye harcandığını gösteren vurguyu görürsünüz. Tabloda işlevler (Toplam) olarak adlandırılanlar dahil olmak üzere işlevde harcanan süre gibi verileri içeren sütunlar ve işlevler (Self) hariç bir işlevde harcanan zamanı gösteren ikinci bir sütun gösterilir.

Bu veriler, işlevin kendisinin performans sorunu olup olmadığını değerlendirmenize yardımcı olabilir. Uç noktalarınızın yavaş olmasının veya kaynak tüketiminin ağır olmasının nedeninin üçüncü taraf kod veya çalışma zamanı kitaplıkları olup olmadığını görmek için yöntemin ne kadar veri görüntülediğini belirleyin.

Alev grafiğini kullanma hakkında daha fazla bilgi için bkz. Flame Graph ile sıcak yolları tanımlama.

Enstrümantasyon çağrı ağacı

Çağrı ağacını görüntülemek için rapordaki üst düğümü seçin. Varsayılan olarak, Enstrümantasyon sayfası Çağıran/Çağrılan görünümünde açılır. Geçerli Görünüm açılır listesinde, Arama Ağacıseçin. Çağrı ağacı görünümü, performans sorunlarını hızla belirlemenize yardımcı olabilir.

Arama ağacı görünümünde en çok duvar saati zamanı kullanan işlev çağrılarını görmek için Sık Erişimli Yolu Genişlet tıklayabilir ve Sık Erişimli Yolu Göster düğmelerini.

Çağrı ağacı yapısını gösteren ekran görüntüsü.

İşte sütun değerleri hakkında daha fazla bilgi:

  • Toplam işlevinde ne kadar zaman harcandığını ve işlevin çağırdığı işlevleri gösterir. Yüksek Toplam değerleri en çok saat kullanan işlevlere işaret eder.

  • Self işlevin gövdesinde ne kadar zaman harcandığını belirtir; bu süre, tarafından çağrılan işlevlerde harcanan zaman hariçtir. Yüksek Self değerleri işlevin kendi içinde bir performans sorununa işaret edebilir.

  • Çağrı Sayısı bir işlevin çağrılma sayısını gösterir.

  • Modülü İşlevi içeren modülün adı.

Çağrı ağacındaki beklenmeyen verileri anlama konusunda yardım için bkz. Çağrı ağacını anlama.

.NET İzleme çağrı ağacında asenkron çağrılar

Visual Studio 2022 sürüm 17.13 Önizleme 2'den itibaren, bir görsel çağrı ağacını temsil eden görünümler, .NET zaman uyumsuz çağrılarını, çağrının yapıldığı işlevlerin altında iç içe geçirir. Bu, yürütme akışını tek bir birleşik yığın izlemesi içinde izlemeyi kolaylaştırır. Bu, performans sorunlarını hızla belirlemenize yardımcı olabilir.

Birleştirilmiş yığın izlemesi, Özet sayfasının Çağrı Ağacı görünümünde ve Sık Erişimli Yol bölümünde gösterilir. Zaman uyumsuz (asenkron) düğümler [Async Call] tanımlayıcısıyla görüntülenir.

Eşzamansız çağrılar için Çağrı ağacı yapısını gösteren ekran görüntüsü.

Profil oluşturucunun Özet görünümünde, Filtre seçeneğinden Asenkron Yığınları Birleştir seçimini yaparak birleştirilmiş asenkron çağrı yığınlarının görüntüsünü açıp kapatabilirsiniz. Ayar varsayılan olarak etkindir.

Kalıcı Asenkron Yığınlar seçeneğini gösteren ekran görüntüsü.