تصحيح الاستثناءات في تطبيقات .NET باستخدام Snapshot Debugger

عند التمكين، يجمع Snapshot Debugger تلقائيا لقطة تتبع أخطاء للتعليمات البرمجية المصدر والمتغيرات عند حدوث استثناء في تطبيق .NET المباشر. Snapshot Debugger في Application Insights:

  • مراقبة السجلات التي ينشئها النظام من تطبيق الويب.
  • يجمع لقطات على استثناءات الطرح الأعلى.
  • يوفر المعلومات التي تحتاجها لتشخيص المشكلات في الإنتاج.

تعرف على المزيد حول عمليات Snapshot Debugger و Snapshot Uploader.

التطبيقات والبيئات المدعومة

يسرد هذا القسم التطبيقات والبيئات المدعومة.

التطبيقات

تتوفر مجموعة اللقطات من أجل:

البيئات

يتم دعم البيئات التالية:

إشعار

تطبيقات العميل (على سبيل المثال، WPF أو Windows Forms أو UWP) غير مدعومة.

المتطلبات الأساسية لاستخدام Snapshot Debugger

الحزم والتكوينات

  • قم بتضمين حزمة NuGet ل Snapshot Collector في التطبيق الخاص بك.
  • تكوين معلمات المجموعة في ApplicationInsights.config.

الأذونات

كيفية عمل Snapshot Debugger

يتم تنفيذ Snapshot Debugger كمعالج بيانات تتبع الاستخدام Application Insights. عند تشغيل التطبيق الخاص بك، تتم إضافة معالج بيانات تتبع الاستخدام Snapshot Debugger إلى البنية الأساسية لبرنامج ربط العمليات التجارية للسجلات التي تم إنشاؤها بواسطة النظام للتطبيق الخاص بك.

هام

قد تحتوي اللقطات على بيانات شخصية أو معلومات حساسة أخرى في قيم المتغيرات والمعلمات. يتم تخزين بيانات اللقطة في نفس المنطقة مثل مورد Application Insights.

عملية Snapshot Debugger

تبدأ عملية Snapshot Debugger وتنتهي بالأسلوب TrackException . لقطة العملية هي نسخة موقوفة مؤقتا من العملية قيد التشغيل، بحيث يواجه المستخدمون انقطاعا ضئيلا أو معدوما. في سيناريو نموذجي:

  1. يطرح TrackExceptionالتطبيق الخاص بك .

  2. يراقب Snapshot Debugger الاستثناءات أثناء طرحها عن طريق الاشتراك في AppDomain.CurrentDomain.FirstChanceException الحدث.

  3. يتم زيادة عداد لمعرف المشكلة.

    • عندما يصل العداد إلى ThresholdForSnapshotting القيمة، تتم إضافة معرف المشكلة إلى خطة مجموعة.

    إشعار

    ThresholdForSnapshotting القيمة الدنيا الافتراضية هي 1. باستخدام هذه القيمة، يجب أن يقوم تطبيقك بتشغيل الاستثناء نفسه مرتين قبل إنشاء لقطة.

  4. يتم حساب معرف مشكلة حدث الاستثناء ومقارنته بمعرفات المشكلة في خطة المجموعة.

  5. إذا كان هناك تطابق بين معرفات المشكلة، يتم إنشاء لقطة لعملية التشغيل.

    • يتم تعيين لقطة معرف فريد ويتم ختم الاستثناء بهذا المعرف.

    إشعار

    معدل إنشاء اللقطات محدود بواسطة الإعداد SnapshotsPerTenMinutesLimit. بشكل افتراضي، الحد هو لقطة واحدة كل 10 دقائق.

  6. بعد إرجاع معالج FirstChanceException، تتم معالجة الاستثناء الذي تم طرحه كالمعتاد.

  7. يصل الاستثناء TrackException إلى الأسلوب مرة أخرى ويتم الإبلاغ عنه إلى Application Insights، جنبا إلى جنب مع معرف اللقطة.

إشعار

قم بتعيين IsEnabledInDeveloperMode إلى true إذا كنت تريد إنشاء لقطات أثناء تتبع الأخطاء في Visual Studio.

عملية تحميل اللقطة

بينما تستمر عملية Snapshot Debugger في التشغيل وخدمة نسبة استخدام الشبكة للمستخدمين الذين يعانون من انقطاع بسيط، يتم تسليم اللقطة إلى عملية Snapshot Uploader. في سيناريو نموذجي، يقوم Snapshot Uploader:

  1. إنشاء minidump.

  2. تحميل 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 لتطبيقك: