سؤال

متى يجب علي تضمين ملفات PDB لإصدار الإنتاج؟هل يجب أن أستخدم Optimize code العلم وكيف سيؤثر ذلك على المعلومات التي أحصل عليها من الاستثناء؟

إذا كانت هناك فائدة ملحوظة في الأداء، فسأرغب في استخدام التحسينات، ولكن إذا لم يكن الأمر كذلك، فأنا أفضل الحصول على معلومات تصحيح أخطاء دقيقة.ما الذي يتم فعله عادةً لتطبيق الإنتاج؟

هل كانت مفيدة؟

المحلول

عندما تريد رؤية أسماء الملفات المصدر وأرقام الأسطر في عمليات التتبع المكدسة، قم بإنشاء PDBs باستخدام خيار pdb فقط.التحسين منفصل عن توليد PDB، أي.يمكنك تحسين و إنشاء PDBs دون تحقيق نتيجة في الأداء.

من مرجع لغة C#

إذا كنت تستخدم /debug:full، فاعلم أن هناك بعض التأثير على سرعة وحجم التعليمات البرمجية المحسّنة لـ JIT وتأثيرًا بسيطًا على جودة التعليمات البرمجية باستخدام /debug:full.نوصي باستخدام /debug:pdbonly أو عدم وجود PDB لإنشاء كود الإصدار.

نصائح أخرى

للإجابة على سؤالك الأول، ما عليك سوى تضمين PDBs لإصدار الإنتاج إذا كنت بحاجة إلى أرقام الأسطر لتقارير الاستثناءات الخاصة بك.

للإجابة على سؤالك الثاني، فإن استخدام علامة "التحسين" مع PDBs يعني أن أي منها سوف ينعكس "انهيار" المكدس في تتبع المكدس.لست متأكدًا مما إذا كان رقم السطر الفعلي الذي تم الإبلاغ عنه خاطئًا - فهذا يحتاج إلى مزيد من التحقيق.

للإجابة على سؤالك الثالث، يمكنك الحصول على أفضل ما في العالمين بخدعة رائعة إلى حد ما.تتمثل الاختلافات الرئيسية بين إنشاء تصحيح الأخطاء الافتراضي وبناء الإصدار الافتراضي في أنه عند إنشاء إصدار افتراضي، يتم تشغيل التحسين ولا يتم إصدار رموز تصحيح الأخطاء.إذن في أربع خطوات:

  1. قم بتغيير تكوين الإصدار الخاص بك لإصدار رموز التصحيح.ليس لهذا أي تأثير تقريبًا على أداء تطبيقك، وهو مفيد جدًا إذا كنت (متى؟) تحتاج إلى تصحيح أخطاء إصدار إصدار تطبيقك.

  2. قم بالتجميع باستخدام تكوين بناء الإصدار الجديد، على سبيل المثال. مع رموز التصحيح و مع تحسين.لاحظ أن 99% من تحسين التعليمات البرمجية يتم بواسطة مترجم JIT، وليس مترجم اللغة.

  3. قم بإنشاء ملف نصي في مجلد تطبيقك يسمى xxxx.exe.ini (أو dll أو أي شيء آخر)، حيث xxxx هو اسم الملف القابل للتنفيذ.يجب أن يبدو هذا الملف النصي في البداية كما يلي:

    [.NET Framework Debugging Control]
    GenerateTrackingInfo=0
    AllowOptimize=1
    
  4. باستخدام هذه الإعدادات، يعمل تطبيقك بأقصى سرعة.عندما تريد تصحيح أخطاء تطبيقك عن طريق تشغيل تتبع التصحيح وربما إيقاف تشغيل تحسين التعليمات البرمجية (CIL)، فما عليك سوى استخدام الإعدادات التالية:

    [.NET Framework Debugging Control]
    GenerateTrackingInfo=1
    AllowOptimize=0 
    

يحرر وفقًا لتعليق كاتي، يمكن أن يعمل هذا أيضًا في بيئة مستضافة مثل ASP.NET.

ليست هناك حاجة لإدراجها في التوزيع الخاص بك، ولكن يجب عليك بالتأكيد بنائها والاحتفاظ بها.وإلا فإن تصحيح أخطاء تفريغ التعطل أمر مستحيل عمليا.

أود أيضًا تشغيل التحسينات.في حين أنه يجعل تصحيح الأخطاء أكثر صعوبة، إلا أن مكاسب الأداء عادة ما تكون غير تافهة للغاية اعتمادًا على طبيعة التطبيق.نرى بسهولة أداءً يزيد عن 10 أضعاف عند الإصدار مقابل تصميمات تصحيح الأخطاء لبعض الخوارزميات.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top