تصحيح الأخطاء .NET باستخدام SOS
سؤال
لقد أنشأت تفريغ باستخدام clrdump. عندما أذهب لمشاهدته باستخدام SOS ، أقوم بتحميل SOS ثم أقوم بتشغيل! DSO ، لكن الخطأ الذي أحصل عليه هو:
PDB symbol for mscorwks.dll not loaded
ومع ذلك ، في نافذة الوحدة النمطية ، يقول أن الرمز يتم تحميله. لقد حصلت على رموز محدثة من متجر MS؟
أي شخص أي أفكار؟
شكرًا،
دارين.
المحلول
أنت لا تحتاج حقًا إلى رموز ل mscorwks.dll
ل !dso
للعمل بشكل صحيح ، ولكن إليك بعض النصائح حول كيفية الحصول على الرموز.
أول شيء عليك القيام به هو التحقق من أنك قمت بتعيين مسار الرمز؟ يمكنك عرض الإعداد الحالي لمسار الرمز باستخدام .sympath
أمر. يمكنك إما تنزيل جميع الرموز وتوجيه مسار الرمز إلى الموقع على القرص ، أو مجرد استخدام خادم الرمز عبر الإنترنت. في كلتا الحالتين ، يجب أن يشير مسار الرمز إلى الموقع الصحيح.
يمكنك استعمال ال .symfix
أمر للإشارة إلى خادم الرمز العام من Microsoft ، والذي ربما يكون أسهل طريقة للحصول على الرموز (شريطة أن يكون لديك وصول عبر الإنترنت).
استخدم ال lm
أمر لرؤية الوحدات النمطية ورموزها. إذا كان يقول pdb symbols
بجانب الوحدة النمطية ، كل شيء على ما يرام. ضع في اعتبارك أن Windbg لن يحمل سوى الرموز حسب الحاجة ، لذلك بالنسبة للعديد من الوحدات النمطية التي ستشاهدها على الأرجح deferred
. يمكنك فرض رموز تحميل لجميع الوحدات النمطية باستخدام .reload /f
أمر.
لاستكشاف الأخطاء وإصلاحها ، استخدم الرموز استخدام !sym noisy
أمر. سيخبرك أين يحاول تصحيح الأخطاء تحديد موقع ملفات PDB.
نصائح أخرى
!sym noisy
.symfix
.reload -f