تصحيح الاستثناءات في تطبيقات .NET باستخدام Snapshot Debugger
عند التمكين، يجمع Snapshot Debugger تلقائيا لقطة تتبع أخطاء للتعليمات البرمجية المصدر والمتغيرات عند حدوث استثناء في تطبيق .NET المباشر. Snapshot Debugger في Application Insights:
- مراقبة السجلات التي ينشئها النظام من تطبيق الويب.
- يجمع لقطات على استثناءات الطرح الأعلى.
- يوفر المعلومات التي تحتاجها لتشخيص المشكلات في الإنتاج.
تعرف على المزيد حول عمليات Snapshot Debugger و Snapshot Uploader.
التطبيقات والبيئات المدعومة
يسرد هذا القسم التطبيقات والبيئات المدعومة.
التطبيقات
تتوفر مجموعة اللقطات من أجل:
- .NET Framework 4.6.2 والإصدارات الأحدث.
- .NET 6.0 أو إصدار أحدث على Windows.
البيئات
يتم دعم البيئات التالية:
- Azure App Service
- دالات Azure
- خدمات سحابة Azure قد تشغيل مجموعة نظام تشغيل 4 أو أحدث
- Azure Service Fabric قيد التشغيل على Windows Server 2012 R2 أو أحدث
- أجهزة Azure الظاهرية ومجموعات مقياس الجهاز الظاهري Azure التي تعمل بنظام التشغيل Windows Server 2012 R2 أو أحدث
- الأجهزة الظاهرية أو الفعلية المحلية التي تعمل على Windows Server 2012 R2 أو أحدث أو Windows 8.1 أو أحدث
إشعار
تطبيقات العميل (على سبيل المثال، WPF أو Windows Forms أو UWP) غير مدعومة.
المتطلبات الأساسية لاستخدام Snapshot Debugger
الحزم والتكوينات
- قم بتضمين حزمة NuGet ل Snapshot Collector في التطبيق الخاص بك.
- تكوين معلمات المجموعة في
ApplicationInsights.config
.
الأذونات
- تحقق من إضافتك إلى دور Application Insights Snapshot Debugger للقطة Application Insights الهدف.
كيفية عمل Snapshot Debugger
يتم تنفيذ Snapshot Debugger كمعالج بيانات تتبع الاستخدام Application Insights. عند تشغيل التطبيق الخاص بك، تتم إضافة معالج بيانات تتبع الاستخدام Snapshot Debugger إلى البنية الأساسية لبرنامج ربط العمليات التجارية للسجلات التي تم إنشاؤها بواسطة النظام للتطبيق الخاص بك.
هام
قد تحتوي اللقطات على بيانات شخصية أو معلومات حساسة أخرى في قيم المتغيرات والمعلمات. يتم تخزين بيانات اللقطة في نفس المنطقة مثل مورد Application Insights.
عملية Snapshot Debugger
تبدأ عملية Snapshot Debugger وتنتهي بالأسلوب TrackException
. لقطة العملية هي نسخة موقوفة مؤقتا من العملية قيد التشغيل، بحيث يواجه المستخدمون انقطاعا ضئيلا أو معدوما. في سيناريو نموذجي:
يطرح
TrackException
التطبيق الخاص بك .يراقب Snapshot Debugger الاستثناءات أثناء طرحها عن طريق الاشتراك في
AppDomain.CurrentDomain.FirstChanceException
الحدث.يتم زيادة عداد لمعرف المشكلة.
- عندما يصل العداد إلى
ThresholdForSnapshotting
القيمة، تتم إضافة معرف المشكلة إلى خطة مجموعة.
إشعار
ThresholdForSnapshotting
القيمة الدنيا الافتراضية هي 1. باستخدام هذه القيمة، يجب أن يقوم تطبيقك بتشغيل الاستثناء نفسه مرتين قبل إنشاء لقطة.- عندما يصل العداد إلى
يتم حساب معرف مشكلة حدث الاستثناء ومقارنته بمعرفات المشكلة في خطة المجموعة.
إذا كان هناك تطابق بين معرفات المشكلة، يتم إنشاء لقطة لعملية التشغيل.
- يتم تعيين لقطة معرف فريد ويتم ختم الاستثناء بهذا المعرف.
إشعار
معدل إنشاء اللقطات محدود بواسطة الإعداد
SnapshotsPerTenMinutesLimit
. بشكل افتراضي، الحد هو لقطة واحدة كل 10 دقائق.بعد إرجاع معالج
FirstChanceException
، تتم معالجة الاستثناء الذي تم طرحه كالمعتاد.يصل الاستثناء
TrackException
إلى الأسلوب مرة أخرى ويتم الإبلاغ عنه إلى Application Insights، جنبا إلى جنب مع معرف اللقطة.
إشعار
قم بتعيين IsEnabledInDeveloperMode
إلى true
إذا كنت تريد إنشاء لقطات أثناء تتبع الأخطاء في Visual Studio.
عملية تحميل اللقطة
بينما تستمر عملية Snapshot Debugger في التشغيل وخدمة نسبة استخدام الشبكة للمستخدمين الذين يعانون من انقطاع بسيط، يتم تسليم اللقطة إلى عملية Snapshot Uploader. في سيناريو نموذجي، يقوم Snapshot Uploader:
إنشاء minidump.
تحميل minidump إلى Application Insights، جنبا إلى جنب مع أي ملفات رمز ذات صلة (.pdb).
إشعار
لا يمكن تحميل أكثر من 50 لقطة يوميا.
إذا قمت بتمكين Snapshot Debugger ولكنك لا ترى لقطات، فراجع دليل استكشاف الأخطاء وإصلاحها.
ترقية Snapshot Debugger
ترقيات Snapshot Debugger التلقائية عبر ملحق موقع Application Insights المضمن والمثبت مسبقا.
يتم إهمال إضافة ملحق موقع Application Insights يدويا للحفاظ على تحديث Snapshot Debugger.
المصاريف الإضافية
تم تصميم Snapshot Debugger للاستخدام في بيئات الإنتاج. تتضمن الإعدادات الافتراضية حدود المعدل لتقليل التأثير على تطبيقاتك.
ومع ذلك، قد تواجه وحدة المعالجة المركزية الصغيرة والذاكرة ونفقات الإدخال/الإخراج المقترنة ب Snapshot Debugger، مثل:
- عند طرح استثناء في التطبيق الخاص بك
- إذا قرر معالج الاستثناء إنشاء لقطة
- متى
TrackException
يتم استدعاء
لا توجد تكلفة إضافية لتخزين البيانات التي تم التقاطها بواسطة Snapshot Debugger.
راجع أمثلة السيناريوهات التي قد تواجه فيها حمل Snapshot Debugger.
القيود
يناقش هذا القسم القيود المفروضة على Snapshot Debugger.
استبقاء البيانات
يتم تخزين لقطات تتبع الأخطاء لمدة 15 يوماً. يتم تعيين نهج استبقاء البيانات الافتراضي هذا على أساس كل تطبيق. إذا كنت بحاجة إلى زيادة هذه القيمة، يمكنك طلب زيادة بفتح حالة دعم في مدخل Azure. لكل مثيل من Application Insights، يتم السماح بحد أقصى لعدد 50 لقطة في اليوم.
نشر الرموز
يتطلب Snapshot Debugger ملفات رموز على خادم الإنتاج من أجل:
- فك ترميز المتغيرات
- توفير تجربة تصحيح الأخطاء في Visual Studio
بشكل افتراضي، ينشر الإصدار 15.2+ من Visual Studio 2017 رموزا لإصدارات الإصدار عند النشر إلى App Service.
في الإصدارات السابقة، يجب إضافة السطر التالي إلى ملف تعريف
.pubxml
النشر بحيث يتم نشر الرموز في وضع الإصدار:<ExcludeGeneratedDebugSymbol>False</ExcludeGeneratedDebugSymbol>
بالنسبة إلى Azure Compute والأنواع الأخرى، تأكد من أن ملفات الرموز إما:
- في نفس المجلد من التطبيق
.dll
الرئيسي (عادة،wwwroot/bin
)، أو - متوفر على المسار الحالي.
لمزيد من المعلومات حول خيارات الرموز المختلفة المتوفرة، راجع Visual Studio documentation. للحصول على أفضل النتائج، نوصي باستخدام Full أو Portable أو Embedded.
الإصدارات المحسنة
في بعض الحالات، لا يمكن عرض المتغيرات المحلية في إصدارات الإصدار بسبب التحسينات التي يطبقها المحول البرمجي JIT.
ومع ذلك، في App Service، يمكن ل Snapshot Debugger إلغاء تنشيط أساليب الطرح التي تعد جزءا من خطة التجميع الخاصة به.
تلميح
قم بتثبيت ملحق موقع Application Insights في مثيل App Service للحصول على دعم إلغاء التطبيق.
الخطوات التالية
تمكين Application Insights Snapshot Debugger لتطبيقك: