كيف يمكنك التعرف على (الحصول على) modules/رموز التصحيح لاستخدامها عند توفر نظام التشغيل windows .dmp أو .minidmp
سؤال
في طريقة بعد قراءة ويندوز *.dmp
بعد أن تلقى ملف تفريغ من عشوائية العملاء, تشغيل جلسة عمل التصحيح لرؤية الحادث ، وكثيرا ما تجد ذلك في مرض التصلب العصبي المتعدد أو طرف ثالث آخر المكتبة.العدد القادم هو أنه قد لا يكون لديك المعرفة من جهاز الكمبيوتر الإعداد إلى حد أنه يمكنك التأكد من أن لديك فعلا الوحدات المتاحة.
فعلى سبيل المثال أنا حاليا عالقة في محاولة للحصول على رموز تحميل ntdll.dll (5.01.2600.5512).في MSVC 2005 المسار عمود في قائمة وحدات النافذة يظهر * قبل تماما pathed اسم الملف, يرفض تحميل الرموز يجب تحميلها XP/SP1/SP1a/SP2/SP3.
لدي الرمز إعداد ملقم التحميل من الإنترنت وتخزينها في ذاكرة التخزين المؤقت المحلية التي يبدو أن تعمل بشكل جيد بالنسبة الوحدات التي لدي على جهاز الكمبيوتر.باستخدام واجهة المستخدم الرسومية equivelant طريقة
Set _NT_SYMBOL_PATH=srv*d:\SymbolCache*\\server1\Third-Party-PDB;srv*d:\SymbolCache*\\server2\Windows\Symbols*http://msdl.microsoft.com/download/symbols
ربما يكون الخطأ الرموز ، ولكن جديدة لم تحميله أين أذهب بعد ذلك ؟ هل يجب علي الاتصال العميل و اطلب ما SP لديهم تثبيت أي بقع ؟ هل يجب تثبيت هذا الجهاز ثم تشغيل المصحح مع ملف برنامج إدارة الكوارث إلى الحصول على رموز أحتاج ؟
المحلول
ما الذي تستخدمه لتصحيح تفريغ مصغر؟ أي WinDBG أو Visual Studio؟ وكيف تم تفريغ مصغر ولدت؟
ويجب أن يكون هناك ما يكفي من المعلومات في تفريغ مصغر لحل رموز النظام دلل بشكل صحيح. هل تستخدم التحميل المحلية من الرموز أو http://msdl.microsoft.com/ ؟
تحديث: يجب أن تكون قادرا على إضافة الجمهور مخزن رمز مايكروسوفت إلى أدوات> خيارات> Debugging-> Symbols-> ملف رمز (.PDB) موقعا، ثم يدويا تحميل الرموز عن طريق النقر بزر الماوس الأيمن فوق وحدة في نافذة وحدات تحميلها إذا لم يتم ذلك تلقائيا.
وكما انها ربما (المحتمل) أن VS 2005 لا ننظر _NT_SYMBOL_PATH
لحل رموز تفريغ مصغر.
نصائح أخرى
إذا كنت تستخدم WinDbg (جزء من أدوات التصحيح ل Windows و> الحزمة)، ثم انها بسيطة لأنها قد سحب الرموز المناسبة لك من Microsoft تلقائيا. تكوين مسار الرمز باستخدام ".symfix" (أو ".symfix +"، لإلحاق ببساطة إلى المسار القائمة بحث رمز) الأوامر.
وبمجرد الانتهاء من ذلك القيام به، وكان لديك تفريغ تحطم تحميل في WinDbg، اكتب ".reload / و" لتسبب WinDbg لتحميل الرموز. فإنه سيتم استخدام المعلومات في ملف تفريغ نفسه لسحب الرموز الصحيحة من ملقم الرموز العام مايكروسوفت، بغض النظر عن ما دلس لديك على جهازك.
وإذا كان لسبب رموز لا يتم تحميلها بشكل صحيح بعد أن كنت قد فعلت ذلك، أدخل "! SYM صاخبة" في إطار الأوامر WinDbg وتحميل الرموز مرة أخرى. كما يحاول WinDbg لتحميلها، وسوف نرى ذلك الانتاج أية أخطاء أنه واجه في عملية البحث / حمولتها. ورسائل الخطأ هذه تساعدك على تشخيص المزيد من ما يجري على خطأ، لماذا لا يتم تحميل الرموز الصحيحة.
هذه الوظيفة ديه المعلومات التي قد أيضا أن تكون ذات فائدة.
إذا كنت تكتب "Set _NT_SYMBOL_PATH = srv...
"في موجه الأوامر, هناك نوعان من الأشياء في الاعتبار:
cmd.exe
'sset
الأمر لا تتجاهل بيضاء, حتى يعرف هذا المتغير يسمى "_NT_SYMBOL_PATH
"لا "_NT_SYMBOL_PATH
".- يجب عليك بدء تشغيل المصحح طفلا من موجه الأوامر.ومع ذلك ، ليس عليك أن تفعل هذا إذا كنت تستخدم لوحة التحكم لتعيين المستمرة متغيرات البيئة ، أو إذا كنت تستخدم
setx
الأمر (في نظام التشغيل Windows Vista أو واحد من موارد Windows مجموعات).
إذا كنت وضع مسار الرمز بطريقة أخرى ، ثم هذا لا ينطبق.
وحاول اتباع التعليمات الموجودة على هذه المادة كيلوبايت ، وتأكد من تكوين مسار الرمز الخاص بك صحيح، أن WinDbg لديه حق الوصول إليها، وأن الرموز ntdll (على سبيل المثال) يتم تحميلها في الواقع إلى مخبأ رمز الخاص بك. وتنص المادة أيضا على تعليمات حول كيفية تحميل يدويا والتحقق من رموز في ذاكرة التخزين المؤقت عن طريق أداة SymChk.