سؤال

عندما يتم تنفيذ Ngen على تطبيق .NET المدار في وقت التثبيت، يتم استرداد تفريغ التعطل من Windows Error Reporting للتطبيق، كيف يمكنك استخدامه لرؤية تتبع المكدس أو المتغيرات، إلخ؟

إليك بعض الخلفية المتعلقة بالسؤال: لدينا تطبيق .NET الذي يحصل على تثبيت في التثبيت. عندما تعطل بسبب استثناء غير معالج .NET، فإن التعطل هو عطف في إعداد التقارير خطأ في Windows، ومن أنه كنت قادرا على تنزيل ملف minidump.mdmp من winqual.microsoft.com.

أضع MinIDump.MDMP في مجلد يحتوي على ملفات .dbg لبناء التطبيق الذي تعطل، والنقر المزدوج النقر فوق minidump.mdmp لفتحه في مثيل جديد من VS2008 SP1. تتبع مكدس بلدي يشبه هذا:

kernel32.dll! raiseException () + 0x3D بايت
mscorwks.dll! raiseethexceptionInnalonly () + 0x295 بايت
mscorwks.dll! jit_throw () + 0x130 بايت
myapp.ni.exe! 000007fee74c84c ()
قد تكون الإطارات أدناه غير صحيحة و / أو مفقودة، لا توجد رموز محملة myapp.ni.exe
0000000070000d5e ()
myapp.ni.exe! 000007fee611000 ()
000000000300BF78 ()
000000000300BF60 ()

تشير نافذة الوحدات النمطية إلى أن الرموز يتم تحميلها لنظام التشغيل و .NET DLLs، ولكن لنوحيات التطبيق، أحصل على هذا:

myapp.exe -> لا توجد رموز أصلية في ملف رمز.
myapp.ni.exe -> لم يتم العثور على ثنائي مطابقة.
myappslibrary.ni.dll -> لم يتم العثور على ثنائي مطابقة.

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

المحلول

إن أسهل طريقة لتصحيح هذه المفاتيح هي مع موصين Windows (Windbg أو CDB أو NTSD) وتحميل ملحق SOS Debugger (يمكنك البحث عن SOS لمزيد من التفاصيل).

بقدر ما أتذكر، يجب أن لا يهم جزء Ngen'ed من الشيء بالنسبة ل SOS طالما أن لديك EXE الأصلي والرموز (نظرا لأن تطبيقك، أتوقع أن يكون لديك exe exte and ngen'ed ).

نصائح أخرى

"أدوات تصحيح الأخطاء لنظام التشغيل Windows" (على وجه التحديد، WINDBG) لديها دعم محدود للتطبيقات المدارة. قدمت مع PDBS، يجب أن تكون قادرا على رؤية مكدس المكالمات، بما في ذلك مراجع خط المصدر. لمعرفة القيم المتغيرة، ستحتاج إلى استخدام البرنامج المساعد SOS، وهو ما هو أكثر صعوبة في فتح نافذة مكدس المكالمة فقط.

إذا كنت قادرا على طلب عملاء تشغيل التطبيق الخاص بك مرة أخرى، اطلب منهم تشغيله مع مجموعة متغير البيئة التالية: Compleus_zapdisable = 1 بهذه الطريقة لن يقوم CLR بتحميل الصور الأصلية عند تشغيل تطبيقك وسترى الوحدات المعتادة مع الرموز على المكدس.

http://referencesource.microsoft.com/faq.aspx.

هل هذا من أي مساعدة لك:

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

نظرا لأن هذا يتم إدارة التعليمات البرمجية، فقد تحتاج إلى تعيين متغير بيئة _nt_executable_image_path للإشارة إلى المجلدات التي تعيش فيها الملفات التنفيذية الخاصة بك. في هذه الحالة، ستحتاج إلى تحديد موقع المجلد في ذاكرة التخزين المؤقت NativeImage التي تشير إلى التجمعات الخاصة بك. يحتاج المصحح إلى الصور من أجل تحميل التجميع.

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