لماذا لا يتم تحميل أي رموز عند تصحيح الأخطاء عن بعد؟

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

سؤال

أريد استخدام التصحيح عن بعد.البرنامج الذي أريد تصحيحه يعمل على الجهاز ب.يعمل Visual Studio على الجهاز أ.

على الجهاز ب لدي مجلد يحتوي على الملفات التالية:

  • msvcr72.dll
  • msvsmon.exe
  • NatDbgDE.dll
  • NatDbgDEUI.dll
  • NatDbgEE.dll
  • NatDbgEEUI.dll

إذا كنت تعتقد أن بعض الملفات مفقودة، هل يمكنك أيضًا وصف مكان وجودها عادةً؟

في الخطوة التالية بدأت msvsmon.exe وبرنامجي على الجهاز ب.على الجهاز أ، بدأت تشغيل Visual Studio 2008 والحل الذي تم كتابة البرنامج فيه.ثم اخترت "Debug - Attach to Process".لقد اخترت "النقل عن بعد (محلي فقط بدون مصادقة)".لقد استخدمت عنوان IP الصحيح كمؤهل واتخذت العملية الصحيحة (program.exe).وبعد فترة ظهرت الرسالة التالية في النافذة المنبثقة:

الاستثناء غير المعالج في 0x7c812a7b في البرنامج.exe:0xE0434F4D:0xe0434f4d

أستطيع أن أستمر أو أن أتوقف؛عند المتابعة، يحدث الاستثناء مرارًا وتكرارًا.لذلك ضغطت على فاصل وظهرت الرسالة التالية:

لم يتم تحميل أي رموز لأي إطار مكدس استدعاء.لا يمكن عرض الكود المصدري.

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

المحلول

تأكد من نسخ ملف .PDB الذي تم إنشاؤه باستخدام التجميع الخاص بك إلى نفس المجلد على الجهاز البعيد.سيسمح هذا لمصحح الأخطاء بالتقاط رموز التصحيح.

نصائح أخرى

  1. أضف مجلدًا مشتركًا على جهاز التطوير الخاص بك يشير إلى موقع ملفات .pdb
  2. قم بإعداد متغير بيئة يسمى _NT_SYMBOL_PATH على الجهاز البعيد الذي يشير إلى المجلد المشترك الموجود على جهاز التطوير الخاص بك

سيقوم مصحح الأخطاء عن بعد الآن بالبحث في جهاز التطوير الخاص بك عن الرموز.لا حاجة لنسخها لكل بناء.

شاهد فيديو MS هنا.

ابدأ المشاهدة بعد مرور 8-9 دقائق.وهو يوضح كيفية إعداد مصحح الأخطاء عن بعد لتحميل الرموز من مشاركة محرك الأقراص على جهاز التطوير الخاص بك.

حظ سعيد!

  • في القائمة "أدوات" في Visual studio 2010، اختر "خيارات".
  • في مربع الحوار خيارات، افتح عقدة التصحيح ثم انقر فوق عام.
  • تحقق من إظهار جميع الإعدادات إذا لزم الأمر وحدد موقعها تمكين الكود الخاص بي فقط(مُدار فقط)
  • قم بإلغاء تحديده وانقر فوق موافق

بعد أن تتمكن من إرفاق العملية عن بعد

لن يعمل تصحيح الأخطاء عن بعد في .NET إذا لم تقم بذلك ضع ملفات .PDB في نفس الدليل حيث يوجد الكود المصحح.

إذا كان VS لا يزال يتعذر عليه العثور على مصدر لتصحيح الأخطاء، فإن الكود الذي تم تصحيحه ومصدر مشروع VS موجودان ليس نفس الإصدار.الحل هو إعادة بناء المشروع وإعادة نشره.

يعد 0xE0434F4D استثناءً من CLR (أي التعليمات البرمجية المُدارة).يتعين عليك إجراء تصحيح الأخطاء عن بعد باستخدام المصادقة واختيار تصحيح التعليمات البرمجية المُدارة.وبدلاً من ذلك، من الممكن استخراج معلومات الاستثناء المُدارة باستخدام بعض ملحقات مصحح الأخطاء، ولكنه عمل شاق بعض الشيء.

مراجع:

إذا تم كسره فهو...

معلومات 1800 صحيحة، يجب عليك إجراء تصحيح الأخطاء عن بعد باستخدام مصادقة Windows لتصحيح أخطاء التعليمات البرمجية المُدارة، وإلا فلن تتمكن من تحميل الرموز للتجميعات المُدارة.يعد تشغيل هذا مع المصادقة أمرًا صعبًا للغاية، لأنه يتطلب حسابات محلية على كلا الجهازين بكلمات مرور متطابقة، من بين أشياء أخرى.هذا السؤال وإجابات الجميع مفيدة جدًا لتحقيق ذلك.

تصحيح الأخطاء عن بعد في Visual Studio (VS2008)، تطبيق Windows Forms

كان لي نفس القضايا.وجدت الجواب على منتديات ام اس دي ان سأقوم فقط بنسخ/لصق الإجابة الصحيحة هنا:

تأكد من أنك تستخدم الإصدار الصحيح من msvsmon.exe !!!هذا كل ما كان!واجهت نفس المشكلة أثناء تصحيح الأخطاء عن بُعد لتطبيق C#.كنت أستخدم x64 msvsmon.exe لأن الخادم يقوم بتشغيل Windows Server 2008 64 بت ، ولكن تم كتابة التطبيق لـ x86 ، لذلك اضطررت إلى تشغيل إصدار x86 من msvsmon.exe من أجل التخلص من هذا الخطأ المزعج.لم تكن هناك حاجة إلى أي شيء آخر.فقط قم بتشغيل إصدار msvsmon.exe الذي يتوافق مع بنية الهدف من التطبيق الخاص بك ^_ ^

على الرغم من أن الإجابات المذكورة أعلاه صحيحة، فقد واجهت حالات حيث كانت قواعد بيانات PDB التي تم إنشاؤها مع التجميع الذي تم تصحيح أخطائه موجودة في مكان بعيد، ولم يتم التقاطها.إذا كنت تستخدم TFS أو آلية إنشاء أخرى تدعم نشر رموز تصحيح الأخطاء، فإنني أوصي بذلك.ثم في خيارات Visual Studio>تصحيح الأخطاء>الرموز، يمكنك إضافة هذا الموقع إلى خيار خوادم الرموز لتحميل تلك الرموز في أي وقت يتم العثور عليها متطابقة.

لقد سمح لي هذا بتصحيح الأخطاء بالقرب من أي شيء قيد التشغيل كتبته حتى لو كان يسمى التجميع ديناميكيًا (وهو شيء لم أتمكن من العمل عليه طوال حياتي عند نشر الرموز مع التجميع فقط).استفد من هذه الميزة المفيدة جدًا!

تمكنت من الحصول على هذا العمل من خلال الذهاب إلى خصائص المشروع ، وعلامة التبويب ترجمة ووضع مسار إخراج البناء على جهازك عن بُعد على سبيل المثال

في علامة التبويب التصحيح قمت بتحديد استخدام الجهاز البعيد وتعيينه على myserver

لقد واجهت هذا أيضًا عند استخدام Custom بناء التكوين. (DEV بدلاً من Debug)

لتصحيح ذلك، قمت بتعديل خصائص المشروع-->إنشاء-->الإخراج-->الإعداد المتقدم وتأكدت من ضبط الإخراج-->معلومات التصحيح ممتلىء أو PDB فقط.الافتراضي يطلق يتم ضبط التكوين عادةً على لا أحد.

اذهب إلى أدوات->خيارات->تصحيح الأخطاء->الرموز وقم بإضافة المسار إلى ملفات .pdb للملف القابل للتنفيذ.المسار على الجهاز المحلي الخاص بي يعمل بشكل جيد.

وفقًا للوثائق، بالنسبة للإدارة (حاولت الارتباط بخدمة Windows المُدارة (المبنية على .net 4.5) على جهاز بعيد باستخدام Visual Studio 2012) يجب أن تكون الرموز على جهاز التحكم عن بعد آلة.

لذلك، احتفظت بالرموز (تأكد من مطابقتها للوحدات/تجميعات التطبيق على الجهاز البعيد) على الجهاز البعيد، وشاركتها وأشرت إليها عبر إعدادات الرمز من النظام المحلي (حيث يتم تشغيل vs).

ملحوظة:لا يلزم أن تكون الخدمة والرموز في نفس الدليل الذي تعمل فيه مع خدمة Windows 2k12 + .net 4.5.

للتفاصيل:

http://msdn.microsoft.com/en-us/library/bt727f1t(v=vs.100).aspx

مقتطف من الرابط:

تحديد موقع ملفات الرمز (.pdb).


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

• يجب أن تكون ملفات الرموز الخاصة بالتطبيقات الأصلية موجودة على الكمبيوتر المضيف لبرنامج Visual Studio.

يجب أن تكون ملفات الرموز الخاصة بالتطبيقات المُدارة موجودة على الكمبيوتر البعيد.

يجب أن تكون ملفات الرموز للتطبيقات المختلطة (المدارة والمحلية) موجودة على كل من الكمبيوتر المضيف Visual Studio والكمبيوتر البعيد.

يعتبر!

لقد واجهت هذه المشكلة ولم تحلها الحلول المذكورة أعلاه بالنسبة لي.في حالتي، كان حل VS2010 الخاص بي يحتوي على العديد من المشاريع.المشروع الذي كنت أحاول تصحيحه عن بعد كان لا تم تعيينه في حل VS2010 الخاص بي كمشروع بدء التشغيل، لأن البرامج النصية الخاصة بي لم تكن صحيحة تمامًا.

لقد قمت بالنقر بزر الماوس الأيمن على المشروع ضمن الحل الذي كنت أحاول تصحيحه واختياره Set as StartUp Project وبعد ذلك تم تحميل الرموز الخاصة بي بشكل صحيح وتم الوصول إلى نقطة التوقف الخاصة بي.

لقد واجهت نفس المشكلة أثناء تصحيح الأخطاء عن بعد، وتم حلها من خلال الخطوات التالية على VS 2008:

  1. تقوم بنسخ ملف pdb المحلي مع الثنائيات الخاصة بك
  2. قم بتشغيل نفس إصدار msvmon الذي تم إنشاء تطبيقك من أجله، إذا كان تطبيقك مصممًا لبنية x86، فستحتاج إلى تشغيل إصدار x86 من msvmon، حتى إذا كنت تقوم بتشغيله على جهاز x64.سيعطي تحذيرًا عند محاولة التشغيل، ولكن يجب تشغيله.
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top