.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:

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.

  1. Azure portal Application Insights kaynağına gidin.
  2. Erişim denetimi (IAM) öğesine tıklayın.
  3. + Rol ataması Ekle düğmesine tıklayın.
  4. roller açılan listesinden Application Insights Snapshot Debugger seçin.
  5. Arama yapmak ve Kullanıcı için bir ad girin.
  6. 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:

Arızalar sayfası

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.

Özel durum üzerinde hata ayıklama anlık görüntüsünü aç düğmesi

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.

Portalda hata ayıklama anlık görüntüsünü görüntüleme

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

  1. 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 .

  2. dosyayı açmak için .diagsession Snapshot 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.

  3. 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.

    Visual Studio hata ayıklama anlık görüntüsünü görüntüle

İ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 ThresholdForSnapshotting 1 ' 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ı SnapshotsPerTenMinutesLimit Ayarla 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:

Uygulama Uygulama Analizler Snapshot Debugger: