ماذا يحدث إذا أضفنا خطوطا إلى رمز IL وإضافة نقاط التوقف إلى برنامجنا؟

StackOverflow https://stackoverflow.com/questions/1247596

سؤال

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

ليس هناك شيء مثل وضع خط x ليكون ذ؟ أتذكر أن رؤية شيء من هذا القبيل في مكان ما، لست متأكدا مما إذا كان .NET ذات الصلة أم لا.

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

المحلول

ستحتاج إلى تحديث رموز تصحيح الأخطاء في ملف PDB إذا كنت تريد أن تظل تجربة تصحيح الأخطاء دون تغيير.

الخيار الأفضل لهذا رأيته هو استخدام mono.cecil., ، كما يدعم تعديل (محدود) لرموز تصحيح الأخطاء وكذلك IL.

نصائح أخرى

إذا كنت تعدل IL، فستتضمن ملفات PDB معلومات قديمة. لاحظ أنه لن يكون هناك من المحتمل أن يكون هناك 1: 1 بين التغييرات في خطوط IL إلى سطر C # (مثل إدراج ثلاث عبارات IL لن تعوض نقطة توقف IDE بنسبة 3 أسطر C #).

قد ترغب في فصل الأجزاء المعدلة IL من التعليمات البرمجية الخاصة بك إلى طرق منفصلة لتقليل التأثير. أيضا، على افتراض أنك تقوم بتعديل IL، قد تجد أنه مناسب للتبديل بين وجهات النظر C # & Il أثناء تصحيح الأخطاء.

قد تحتاج إلى الوحل قليلا مع التعليمات البرمجية التي تم إنشاؤها لتسهيل ذلك. على سبيل المثال، إذا كان يمكن أن يكون IL حقنه في طريقة غلاف، فيمكنك إخبار المصحح بتجاهله عن طريق استخدام البطانات مثل DefangeStepThroughattribute أو debuggernonusercodeattribute أو debuggerhiddenattribute. (ابحث عن وثائق الفروق الدقيقة في السلوك)

أتوقع أن يتم وضع علامة على أنه ملف .pdb قد لا يتطابق.

كيف تضيف IL؟ إذا كنت تقوم بذلك عن طريق أداة Profiler (SetIlfunctionbrombody)، فأنت بحاجة إلى تزويد خريطة رمز IL جديدة أيضا (SetilinStrumentrudentationCodEmap) بحيث يصبح مصحح الأخطاء على دراية بتعديل IL.

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