سؤال

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

وفي ظل هذه الظروف قررت أن تجمع مع خريطة (تمكين في تكوين خصائص-> رابط->المصحح مع الخيار /خريطة) لمعرفة أي وظيفة مما تسبب في تحطم الطائرة.

إذا كنت قد فهمت بشكل صحيح ، عندما تحطم البرنامج يجب أن تحقق أسفل تعويض خطأ ثم البحث في الخريطة تحت عمود الطيران+قاعدة:

     Address                         Publics by Value                                      Rva+Base       Lib:Object
 0001:00037af0       ?PersonalizzaPlancia@CDlgGestioneDatiProgetto@MosaicoDialogs@@IAEXXZ 00438af0 f   DlgGestioneDatiProgetto.obj
 0001:00038000       ?SalvaTemporanei@CDlgGestioneDatiProgetto@MosaicoDialogs@@IAEXXZ 00439000 f   DlgGestioneDatiProgetto.obj

إن الحادث يحدث في الإزاحة:

00038C90
لذلك أعتقد أنه في مكان ما في الأسلوب:

MosaicoDialogs::CDlgGestioneDatiProgetto::PersonalizzaPlancia

ولكن هذا ليس على الاطلاق ممكن ، وذلك على افتراض أن الكمبيوتر لا يمكن أن تكون خاطئة, أنا من يفعل ذلك سيئة.

يمكن للشخص أن يفسر لي كيفية قراءة الخريطة في الطريقة الصحيحة ؟

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

المحلول

قراءة ملفات الخريطة لمعرفة موقع التعطل بشكل جيد في مقالة مشروع الرمز هذا.

p> http://www.codeProject.COM / المواد / 3472 / Finding-Framage-Information-elface-the-map-file

الأمل يساعد.

نصائح أخرى

لا تهتم - بدلا من ذلك، قم ببناء المشروع مع تمكين الرموز ويقطعها في ملف PDB.

تعديل البرنامج قليلا، لكتابة minidump عند تعطل استخدام معالج استثناء غير معالج

أعط البرنامج المترجم حديثا للعميل، وعندما تعطل استدعاء miniDumpWritedump.

اطلب من العميل إرسال ملف .dmp هذا لك، ثم قم ببساطة بتحميله في Visual Studio (أو WINDBG) وسيتطابق مع الرموز إلى البرنامج، وسوف تتطابق مع التعليمات البرمجية أيضا. يجب أن تكون قادرا على رؤية الخط الدقيق للقانون وبعض المتغيرات المعنية. (في حالة استخدام VS، عند تحميل ملف .dmp، سيكون الزاوية اليمنى العليا خيارا "بدء تصحيح الأخطاء"، انقر فوق ذلك لأنه سيتم "بدء تصحيح الأخطاء" عند نقطة التعطل)

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

هناك برامج تعليمية لهذا النوع من الأشياء، مثل هذا واحد من CodeProject يبدو أنه يصف ما تحتاجه.

على بعد الوفاة التصحيح هناك بديل من شأنه أن لا المطلوب استخدام ملف الخريطة.بل يتطلب منك إنشاء بسيط النصي التسجيل لتمكين بعض ور (بالأخطاء في Windows) أعلام فخ ملف تفريغ التعطل.أولا بناء التطبيق الخاص بك مع رموز التصحيح.ثم اتبع الإرشادات جمع في وضع المستخدم مقالب.في الأساس إنشاء الفرعية الرئيسية تحت عنوان "LocalDumps" مفتاح.هذا المفتاح الفرعي يجب أن يكون اسم التطبيق الخاص بك ، على سبيل المثال ، "myapplication.exe".ثم إنشاء "DumpCount", "DumpType" ، و "DumpFolder" المفاتيح/القيم.يكون المستخدم تشغيل البرنامج النصي التسجيل.وهذا سيمكن محاصرة تفريغ محليا.ثم يكون المستخدم قوة الحادث لجمع ملف تفريغ.ثم يمكن للمستخدم إرسال ملف التفريغ إلى التصحيح باستخدام الرموز التي تم إنشاؤها في وقت سابق.وأخيرا, سوف تحتاج إلى إنشاء البرنامج النصي التسجيل أن يزيل مفاتيح/قيم إضافة إلى التسجيل.

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