.NET uygulamalarında özel durumlarda anlık görüntü hatalarını ayıklama
Bir özel durum oluştuğunda, Canlı Web uygulamanızdan otomatik olarak bir hata ayıklama anlık görüntüsü toplayabilirsiniz. Anlık görüntü, kaynak kodu ve değişkenlerin durumunu özel durumun oluşturulduğu anda gösterir. Azure Application Insights Snapshot Debugger web uygulamanızdan özel durum telemetrisini izler. Üretim aşamasındaki sorunları tanılamak için ihtiyaç duyduğunuz bilgilere sahip olmanız için, en önemli özel durumlarınızın anlık görüntülerini toplar. anlık görüntü toplayıcı NuGet paketini uygulamanıza ekleyin ve isteğe bağlı olarak ApplicationInsights.configkoleksiyon parametrelerini yapılandırın. anlık görüntüler Application Insights portalındaki özel durumlar üzerinde görünür.
Hata ayıklama anlık görüntülerini portalda görüntüleyerek çağrı yığınını görebilir ve her bir çağrı yığını çerçevesinde değişkenleri inceleyebilirsiniz. kaynak kodla daha güçlü bir hata ayıklama deneyimi sağlamak için Visual Studio 2019 Enterprise ile anlık görüntüler açın. Visual Studio, ayrıca, bir özel durum beklemeden anlık görüntü almak için anlık görüntü noktaları da ayarlayabilirsiniz .
Hata ayıklama anlık görüntüleri 15 gün boyunca depolanır. Bu bekletme ilkesi, uygulama başına temelinde ayarlanır. Bu değeri artırmanız gerekiyorsa Azure portal bir destek talebi açarak artış isteyebilirsiniz.
uygulamanız için Application Insights Snapshot Debugger etkinleştirin
Anlık görüntü koleksiyonu şu için kullanılabilir:
- .NET Framework 4,5 veya sonraki sürümleri çalıştıran uygulamaları .NET Framework ve ASP.NET.
- .net core ve Windows .net core 2,1 (lts) veya 3,1 (lts) çalıştıran uygulamalar ASP.NET Core.
- Windows .NET 5,0 uygulamaları.
Destek dışı olduklarından, .NET Core 2,0, 2,2 veya 3,0 kullanılmasını önermiyoruz.
Aşağıdaki ortamlar desteklenir:
- Azure App Service
- Azure İşlevi
- İşletim sistemi ailesi 4 veya üstünü çalıştıran Azure Cloud Services
- Windows Server 2012 R2 veya sonraki sürümlerde çalışan Azure Service Fabric hizmetleri
- Windows Server 2012 R2 veya üzeri çalıştıran Azure sanal makineleri ve sanal makine ölçek kümeleri
- Windows Server 2012 R2 veya üzeri ya da Windows 8.1 veya üstünü çalıştıran şirket içi sanal veya fiziksel makineler
Not
istemci uygulamaları (örneğin, WPF, Windows Forms veya UWP) desteklenmez.
Snapshot Debugger etkinleştirdiyseniz, anlık görüntüleri görmüyorsanız, sorun giderme kılavuzumuzukontrol edin.
İzinleri verme
Anlık görüntülere erişim, Azure rol tabanlı erişim denetimi (Azure RBAC) tarafından korunur. Anlık görüntüyü incelemek için önce bir abonelik sahibi tarafından gerekli role eklenmeniz gerekir.
Not
Sahipler ve katkıda bulunanlar bu role otomatik olarak sahip değildir. Anlık görüntüleri görüntülemek istiyorlarsa, kendilerini role eklemesi gerekir.
Abonelik sahipleri, Application Insights Snapshot Debugger anlık görüntüleri inceleye kullanıcılara rolü atamalıdır. bu rol, hedef Application Insights kaynağına veya kaynak grubuna ya da aboneliğine yönelik abonelik sahiplerine bireysel kullanıcılara veya gruplara atanabilir.
- Azure portal Application Insights kaynağına gidin.
- Erişim denetimi (IAM) öğesine tıklayın.
- + Rol ataması Ekle düğmesine tıklayın.
- roller açılan listesinden Application Insights Snapshot Debugger seçin.
- Arama yapmak ve Kullanıcı için bir ad girin.
- Kullanıcıyı role eklemek için Kaydet düğmesine tıklayın.
Önemli
Lütfen anlık görüntülerin değişken ve parametre değerlerinde kişisel veriler veya diğer hassas bilgiler içerebileceğini unutmayın. anlık görüntü verileri, uygulamanızın Analizler kaynağıyla aynı bölgede depolanır.
Portalda anlık görüntüleri görüntüleme
Uygulamanızda bir özel durum oluştu ve bir anlık görüntü oluşturulduktan sonra, görüntülenecek anlık görüntülere sahip olmanız gerekir. Bir anlık görüntüye hazırlık ve portaldan görünebilen bir özel durumdan 5 ila 10 dakika sürebilir. Anlık görüntüleri görüntülemek için, hata bölmesinde, Işlemler sekmesini görüntülerken Işlemler düğmesini seçin veya özel durumlar sekmesini görüntülerken özel durumlar düğmesini seçin:

Sağ bölmedeki bir işlem veya özel durum seçerek uçtan uca Işlem ayrıntıları bölmesini açın, sonra özel durum olayını seçin. Verilen özel durum için bir anlık görüntü varsa, sağdaki bölmede özel durumayrıntılarının bulunduğu bir hata ayıklama anlık görüntüsü aç düğmesi görünür.

Hata ayıklama anlık görüntüsü görünümünde, bir çağrı yığını ve bir değişkenler bölmesi görürsünüz. Çağrı yığını bölmesinde çağrı yığınının çerçevelerini seçtiğinizde, bu işlev çağrısının yerel değişkenlerini ve parametrelerini değişkenler bölmesinde görüntüleyebilirsiniz.

Anlık görüntüler hassas bilgiler içerebilir ve varsayılan olarak görüntülenemez. Anlık görüntüleri görüntülemek için Application Insights Snapshot Debugger rolün size atanmış olması gerekir.
Visual Studio 2017 Enterprise veya üzeri anlık görüntüleri görüntüleme
Visual Studio Enterprise tarafından açılabilen bir dosyayı indirmek için anlık görüntüyü indir düğmesine tıklayın
.diagsession.dosyayı açmak için
.diagsessionSnapshot Debugger Visual Studio bileşeninin yüklü olması gerekir. Snapshot Debugger bileşeni, Visual Studio ASP.NET iş yükünün gerekli bir bileşenidir ve Visual Studio yükleyicisindeki ayrı bileşen listesinden seçilebilir. 2017 sürüm 15,5 ' Visual Studio önce bir Visual Studio sürümünü kullanıyorsanız, uzantıyı Visual Studio marketi'nden yüklemeniz gerekir.anlık görüntü dosyasını açtıktan sonra, Visual Studio ' de mini döküm hata ayıklama sayfası görüntülenir. Anlık görüntüde hata ayıklamayı başlatmak için yönetilen kodda hata ayıkla ' ya tıklayın. Anlık görüntü, işlemin geçerli durumunda Hata ayıklayabilmeniz için özel durumun oluşturulduğu kod satırına açılır.

İndirilen anlık görüntü, Web uygulaması sunucunuzda bulunan sembol dosyalarını içerir. Anlık görüntü verilerini kaynak kodla ilişkilendirmek için bu sembol dosyaları gereklidir. App Service uygulamalar için, Web uygulamalarınızı yayımlarken sembol dağıtımını etkinleştirdiğinizden emin olun.
Anlık görüntülerin nasıl çalıştığı
Snapshot Collector, bir Application Insights Telemetri işlemcisiolarak uygulanır. Uygulamanız çalıştığında, Snapshot Collector telemetri Işlemcisi uygulamanızın telemetri ardışık düzenine eklenir.
Uygulamanız Trackexception'ı her çağırdığında, Snapshot Collector oluşturulan özel durum türünden ve oluşturma yöntemiyle BIR sorun kimliği hesaplar.
Uygulamanız TrackException çağırdığında, ilgili sorun KIMLIĞI için bir sayaç artırılır. Sayaç ThresholdForSnapshotting değere ulaştığında, sorun kimliği bir koleksiyon planına eklenir.
Snapshot Collector, AppDomain. CurrentDomain. FirstChanceException olayına abone olunarak oluşturulan özel durumları da izler. Bu olay tetiklendiğinde, özel durumun sorun KIMLIĞI hesaplanır ve koleksiyon planındaki sorun kimliklerine göre karşılaştırılır. Bir eşleşme varsa, çalışan işlemin bir anlık görüntüsü oluşturulur. Anlık görüntüye benzersiz bir tanımlayıcı atanır ve özel durum bu tanımlayıcıyla damgalı olur. FirstChanceException işleyicisi döndüğünde, oluşturulan özel durum normal olarak işlenir. sonuç olarak, özel durum trackexception yöntemine bir kez ulaşır ve bu da anlık görüntü tanımlayıcısı ile birlikte Application Insights bildirilir.
Ana süreç çalışmaya devam eder ve kullanıcılara az kesintiye uğramış olan trafik sunar. Bu sırada anlık görüntü, Snapshot Uploader işlemine devredildir. Snapshot Uploader bir mini döküm oluşturur ve ilgili sembol (. pdb) dosyalarıyla birlikte Application Insights yükler.
İpucu
- İşlem anlık görüntüsü, çalışan işlemin askıya alınmış bir kopyadır.
- Anlık görüntünün oluşturulması yaklaşık 10 ila 20 milisaniye sürer.
- İçin varsayılan değer
ThresholdForSnapshotting1 ' dir. Bu aynı zamanda en küçük değerdir. Bu nedenle, uygulamanızın bir anlık görüntü oluşturulmadan aynı özel durumu iki kez tetiklemesi gerekir. IsEnabledInDeveloperModeVisual Studio hata ayıklarken anlık görüntü oluşturmak istiyorsanız true olarak ayarlayın.- Anlık görüntü oluşturma hızı
SnapshotsPerTenMinutesLimitAyarla sınırlıdır. Varsayılan olarak, sınır her on dakikada bir anlık görüntüdür. - Gün başına 50 ' ten fazla anlık görüntü yüklenemez.
Sınırlamalar
Varsayılan veri saklama süresi 15 gündür. her bir Application Insights örneği için günde en fazla 50 anlık görüntüye izin verilir.
Sembolleri Yayımla
Snapshot Debugger, değişkenleri çözmek ve Visual Studio bir hata ayıklama deneyimi sağlamak için üretim sunucusunda sembol dosyaları gerektirir.
Visual Studio 2017 sürüm 15,2 (veya üzeri), App Service yayımlandığında yayın derlemeleri için varsayılan olarak sembolleri yayımlar. Önceki sürümlerde, .pubxml semboller yayın modunda yayınlanabilmesi için Yayımlama profili dosyanıza aşağıdaki satırı eklemeniz gerekir:
<ExcludeGeneratedDebugSymbol>False</ExcludeGeneratedDebugSymbol>
Diğer Azure İşlem ve diğer türler için, sembol dosyalarının ana uygulama klasörünün aynı klasöründe (genellikle .dll ) veya geçerli yolda kullanılabilir olduğundan wwwroot/bin emin olun.
Not
Kullanılabilen farklı sembol seçenekleri hakkında daha fazla bilgi için, Visual Studio bakın. En iyi sonuçları elde etmek için "Tam", "Taşınabilir" veya "Katıştırılmış" kullanılması önerilir.
İyileştirilmiş derlemeler
Bazı durumlarda, JIT derleyicisi tarafından uygulanan iyileştirmeler nedeniyle yayın derlemelerinde yerel değişkenler görüntüleyebilirsiniz. Ancak Azure App Services'te Snapshot Collector Planı'nın parçası olan yöntemlerin atması iyi bir yöntem olabilir.
İpucu
En iyi Analizler almak için Uygulama App Service Site Uzantısı'App Service yükleyin.
Sonraki adımlar
Uygulama uygulama Analizler Snapshot Debugger için Uygulama Uygulama Etkinleştir'i etkinleştirin:
- Azure App Service
- Azure İşlevi
- Azure Cloud Services
- Azure Service Fabric hizmetleri
- Azure Sanal Makineler ve sanal makine ölçek kümeleri
- Şirket içi sanal veya fiziksel makineler
Uygulama Uygulama Analizler Snapshot Debugger:
- Özel durum beklemeden anlık görüntüler almak için kodunuz içinde anlık görüntü noktaları ayarlayın.
- Web uygulamalarınıza özel durumları tanılama, Uygulama Uygulamaları için daha fazla özel durumun nasıl görünür Analizler.
- Akıllı Algılama, performans anomalilerini otomatik olarak keşfeder.