أي أوصى VC++ إعدادات أفضل PDB التحليل على الإفراج يبني

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

سؤال

هل هناك أي VC++ الإعدادات يجب أن أعرف عن لتوليد أفضل ملفات PDB التي تحتوي على مزيد من المعلومات ؟

لدي تفريغ أعطال نظام تحليل قائم على أساس المشروع crashrpt.

أيضا الإنتاج بناء ملقم يحتوي على التعليمات البرمجية المصدر المثبتة على D:\ ، ولكن التنمية بلدي آلة شفرة المصدر على C:\.دخلت مسار مصدر في VC++ الإعدادات ، ولكن عندما تبحث من خلال الاستدعاءات من حادث تحطم طائرة ، لا تقفز تلقائيا إلى بلدي شفرة المصدر.أعتقد لو كان لي ديف آلة شفرة المصدر في D:\ انها ستعمل.

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

المحلول

"هل هناك أي VC++ الإعدادات يجب أن أعرفه"

تأكد من إيقاف تشغيل الإطار مؤشر ommision.لاري أوسترمان بلوق لديه التفاصيل التاريخية عن fpo والمسائل الأسباب مع التصحيح.

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

ما هو إصدار VS تستخدمه ؟ (أو يمكنك استخدام Windbg?) ...في مقابل ذلك يجب أن ديفينتيلي الفوري عن مصدر أول الوقت إذا لم يجد الموقع.ومع ذلك فإنه يحتفظ أيضا قائمة من المصدر الذي كان 'غير موجود' حتى لا يطلب منك كل مرة.أحيانا لا تبدو قائمة هو الألم ...للحصول على موجه للأعلى عليك أن تذهب إلى "مستكشف الحلول" /حل عقدة/خصائص/debug خصائص تحرير ملف القائمة في الجزء السفلي.

وأخيرا قد يكون استخدام 'تجريد الرموز'.هذه هي ملفات pdb إنشاؤها لتوفير معلومات التصحيح للمشي مكدس الاستدعاءات الماضي FPO, ولكن مع مواقع المصدر جردت من (جنبا إلى جنب مع غيرها من البيانات).الجمهور رموز نظام التشغيل ويندوز مكونات يتم تجريد pdbs.للحصول على التعليمات البرمجية الخاصة بك هذه ببساطة يسبب الألم و لا يستحق كل هذا العناء إلا إذا كنت توفير pdbs إلى الجهات الخارجية.كيف سيكون لديك واحدة من هذه الرهيبة جردت pdbs?قد يكون لهم إذا كنت تستخدم "binplace" مع -أمر.

حظا سعيدا!سليم تفريغ مصغر قصة هبة من السماء بالنسبة إنتاج التصحيح.

نصائح أخرى

إذا كان الخاص بك بناء مباشرة من المصدرية نظام إدارة ، يجب علق الخاص بك ملفات pdb مع الملف أصول.هذا يسمح لك تلقائيا جلب المصدر الدقيق الملفات أثناء التصحيح.(هذا هو نفس بروسس كما تستخدم من أجل استرداد .Net framework المصدرية).

انظر http://msdn.microsoft.com/en-us/magazine/cc163563.aspx للحصول على مزيد من المعلومات.إذا كنت تستخدم التخريب كما SCM يمكنك التحقق من SourceServerSharp المشروع.

يمكنك محاولة استخدام MS-DOS subst الأمر تعيين التعليمات البرمجية المصدر الخاصة بك دليل D:محرك الأقراص.

هذا هو الإجراء اعتدت بعد بعض المشاكل مماثلة ليدكم:

أ) نسخ إلى خادم الإنتاج كل EXE & ملفات DLL التي بنيت كل المقابلة PDB إلى نفس الدليل ، بدأ النظام ، وانتظر الحادث أن يحدث.

ب) نسخ جميع EXE, DLL & ملفات PDB إلى تطوير آلة (إلى مجلد مؤقت) جنبا إلى جنب مع تفريغ مصغر (في نفس المجلد).تستخدم Visual Studio لتحميل تفريغ مصغر من هذا المجلد.

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

اثنين من أكثر النصائح:

  • شيء واحد أنا في كثير من الأحيان إلى نسخة EXE/DLL بناء تنسى نسخ جديدة PDB.هذا دمر التصحيح دورة VS لن تكون قادرة على أن تظهر لي مكدس الاستدعاءات.

  • في بعض الأحيان لدي الاستدعاءات لم يكن له معنى في مقابل.بعد بعض الصداع, اكتشفت أن windbg دائما تظهر لي الصحيحة المكدس ، ولكن مقابل في كثير من الأحيان لا.لا أعرف لماذا.

في حالة أي شخص مهتم ، زميل أجاب على هذا السؤال لي عبر البريد الإلكتروني:

ارتيم كتب:

هناك علم MiniDumpWriteDump() التي يمكن أن تفعل أفضل تحطم مقالب أن سوف تتيح رؤية كاملة برنامج الدولة ، مع كل المتغيرات العالمية ، إلخ.أما بالنسبة دعوة مداخن, أشك في أنها يمكن أن تكون أفضل بسبب التحسينات...إلا إذا كنت بدوره (ربما بعض) تحسينات قبالة.

أيضا, أعتقد تعطيل مضمنة وظائف البرنامج كله التحسين سوف تساعد الكثير جدا.

في الواقع ، هناك العديد من تفريغ أنواع ، ربما يمكنك أن تختار واحدة صغيرة بما فيه الكفاية ولكن لا تزال تواجه مزيد من المعلومات http://msdn.microsoft.com/en-us/library/ms680519(مقابل.85).aspx

هذه الأنواع لن يساعد مع مكدس الاستدعاءات على الرغم من أنها تؤثر فقط على كمية من المتغيرات سوف تكون قادرا على رؤية.

لاحظت بعض تلك تفريغ أنواع غير معتمدة في dbghelp.dll الإصدار 5.1 التي نستخدمها.يمكننا التحديث إلى أحدث 6.9 الإصدار على الرغم من أنني فقط التحقق من الترخيص بالنسبة MS أدوات التصحيح-أحدث dbghelp.dll لا يزال موافق إعادة توزيع.

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

يمكنك معرفة ما إذا كان تحميل الرموز من خلال النظر في "وحدات" نافذة في Visual Studio.

على افتراض كنت بناء PDB ثم أنا لا أعتقد أن هناك أي خيارات التحكم في كمية المعلومات في PDB مباشرة.يمكنك تغيير نوع من التحسينات التي يقوم بها المترجم إلى تحسين debuggabilty ، ولكن هذا سيكلف الأداء-كما زملائك يشير تعطيل مضمنة سوف تساعد في جعل الأمور أكثر وضوحا في الملف crash, ولكن التكلفة ستكون في وقت التشغيل.

اعتمادا على طبيعة التطبيق الخاص بك أنصح العمل مع تفريغ كامل الملفات إذا كنت تستطيع ، فهي أكبر ولكن تعطيك كل المعلومات عن عملية ...وكيف في كثير من الأحيان أنها لا تحطم على أي حال :)

هو Visual Studio دفع لك الطريق إلى مصدر الملف ؟

لا.

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

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

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