رمز تحطم في MS Visual Studio 2005 في الإفراج عن التكوين

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

  •  08-06-2019
  •  | 
  •  

سؤال

لدي مساحة العمل على تشغيل H. 263 فيديو التشفير في حلقة 31 مرة أيالرئيسية يتم تنفيذ 31 مرة لتوليد 31 مختلفة ترميز بت تيارات.هذه MS Visual Studio 2005 مساحة كل ج الملفات المصدر.عندما وضع "تصحيح" التكوين من أجل العمل و بناء و تنفيذ ذلك ، فإنه يعمل بشكل جيد ، أيفإنه يولد كل 31 إخراج الملفات كما هو متوقع.ولكن عندما أريد تكوين مساحة العمل إلى "الإفراج" مدوي ، وتكرار عملية التشفير تعطل في بعض اختبار حالة تشغيل.

الآن لتصحيح هذا هو التحقق التالية:

  1. تحليل رمز لمعرفة ما إذا كان هناك أي متغير تهيئة يجري غاب في كل شوط من التشفير
  2. فحص مختلف Workspace(الحل) الخيارات في كل من وسائط (التصحيح وإصدار).

هناك بعض الاختلافات واضحة ، ولكن التفت الأمثل الخيارات المتعلقة بشكل صريح نفسه في كل من وسائط.

ولكن لا يزال لا يمكن أن الأظافر المشكلة وإيجاد حل لهذاأي نصائح ؟

-Ajit.

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

المحلول

من الصعب أن نقول ما قد تكون المشكلة من دون وتفتيش بعناية التعليمات البرمجية.ومع ذلك...

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

شيء آخر قد يكون لتمكين كل التحذيرات كنت ربما يمكن إصلاح لهم جميعا.

نصائح أخرى

يمكن أن يكون مشكلة التزامن اثنين من المواضيع.تصحيح التكوين يبطئ التنفيذ وصولا حتى لا تحدث المشكلة.لكن مجرد تخمين.

مشكلة مثيرة للاهتمام..هل أنت متأكد من أنك لا الشرطية رمز يترصد التي لا يتم جمعها في الإفراج عن الوضع ؟ أنا.هـ:

#if (DEBUG)
// Debug Code here
#else
// Release Code here
#endif

هذا الشيء الوحيد الذي يمكنني أن أفكر..شهدت أبدا أي شيء مثل هذا من نفسي..

يمكنك إضافة رموز التصحيح إلى الإفراج عن بناء وتشغيله في المصحح أن أرى إلى أين و لماذا تحطمت ؟

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

متى تحطم ؟ في كل اختبار ؟ في الاختبار ؟ ماذا يعني أن الاختبار لا أن البعض الآخر لا ؟

ما هو الخطأ ؟ إذا الأمر إلى انتهاك حقوق الوصول, هل يوجد نمط أين يحدث ذلك ؟ إذا كانت عناوين منخفضة ، قد يعني أن هناك uninitialised المؤشر في مكان ما.

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

هل حاولت تشغيل التعليمات البرمجية من خلال محلل مثل تنقية?انها بطيئة ولكن عادة ما يكون يستحق الانتظار.

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

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

هل أنت متأكد من أن هناك لا precompile توجيهات هذا القول يتجاهل بعض المهم حقا رمز في وضع الإصدار ولكن يسمح لهم في التصحيح ؟

أيضا, هل تنفذ أي قطع الأشجار التي قد تشير إلى دقة الجمعية أن رمي الخطأ ؟

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

للنظر في شيء آخر:في وضع التصحيح ، يتم تهيئة المتغيرات مع 0xCCCCCCCC بدلا من الصفر.التي قد يكون لها بعض الآثار الجانبية المؤذية.

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