WINDBG تظهر مداخن مكالمة مختلفة عند التعلق بالمعالجة عند مقارنتها بتفريغ التعطل

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

سؤال

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

عند إرفاق العملية المشكلية، أرى الرسالة التالية قبل أي مكدسات مكالمة:

تحذير: معلومات كومة الاستراحة غير متوفرة. قد تكون الأطر التالية خاطئة.

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

أخذت تفريغ باستخدام:

.dump /ma filename.dmp

ما الذي سيؤدي إلى هذا التناقض، وهو هناك أي شيء يمكنني القيام به لتحليل مكدسات استدعاء ملف التفريغ بشكل موثوق؟ قد يكون هناك أي بيانات أخرى تحريف يجب أن أكون على علم بها؟

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

المحلول

هذا يبدو وكأنه قد يكون قد لا تطابق PDBS. هل جربت !chksym و !itoldyouso الأوامر؟ على سبيل المثال انظر مقالة bugslayer

شيء آخر لمحاولة !sym noisy يجب أن تظهر لك ملفات PDB التي يتم تحميلها.

أنظر أيضا MSDN بلوق

نصائح أخرى

يخبرك التحذير أن المصحح لا يستطيع ربط عناوين واحدة أو أكثر على المكدس مع معلومات الوحدة الحالية. كما يتم تجميع التعليمات البرمجية المدارة على ذبابة CLR، لا توجد وحدات مقابلة للرمز وبالتالي التحذير.

أمر SOS! يحتوي Clrstack على المعلومات اللازمة من CLR لعرض مكدس ذات مغزى (أو على الأقل بدون تحذير). إذا كنت تستخدم أي من أمر تفريغ Stack Native، فسترى هذا التحذير من التعليمات البرمجية المدارة.

الكتاب القادم Advanced .NET تصحيح الأخطاء لديه تفاصيل إضافية. يرى http://advanceddottdebugging.com/

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