لماذا يعمل التطبيق بشكل مختلف بعد إرفاق مصحح أخطاء VS؟

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

سؤال

يوجد تطبيق سطح مكتب مكتوب بلغة c# يحاول إدارة اتصال مأخذ توصيل ويفشل ولكنه ينجح بعد إرفاق نفس التطبيق بالاستوديو المرئي.

كيف يمكن تصحيحه؟

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

المحلول

هذا مثال كلاسيكي للتوقيت.

إذا كان يعمل في مصحح الأخطاء، فهذا يعني أنه يتعين عليك إعادة معالجة التعليمات البرمجية الخاصة بك قليلاً للتعامل مع هذا الأمر.

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

نصائح أخرى

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

لتصحيح ذلك، حاول إضافة بعض أكواد التسجيل إلى تطبيقك، الذي أستخدمه شخصيًا log4net

لا ينبغي أن يكون لديك مشاكل مع malloc وما شابه ذلك أثناء قيامك بالترميز في c#.

إذا كنت تقوم بتشغيل تطبيق ويب، فقد يكون هناك أيضًا اختلاف في خادم الويب cassini في VS والذي تقوم بالنشر إليه.

عادة، مشاكل التوقيت.هل هناك مواضيع متضمنة؟إذا كان C/C++، فقد يكون هناك الكثير من الأسباب بسبب كيفية تصرف أخطاء إدارة الذاكرة.

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

إذا كنت تقوم بتخصيص ذاكرة الوصول العشوائي (RAM) عبر malloc أو جديد، فتأكد من تهيئة الذاكرة بشكل صحيح قبل استخدامها.

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

مع برمجة المقبس، يبدو أن تصحيح الأخطاء باستخدام VisualStudio.Net يشبه إجراء استدعاءات إضافية لـ Application.DoEvents().لقد وجدنا أن لدينا أشياء ستفشل (عدم تصحيح الأخطاء) ما لم نسمح للمكون بالتنفس (على سبيل المثال.التعامل مع الأحداث الخاصة به) عن طريق استدعاء Application.DoEvents().

عندما يتم إرفاق Visual Studio بالتطبيق الخاص بك، يكون لدى CLR وJIT اختلافات طفيفة في وقت التشغيل لتمكين تصحيح الأخطاء.جمع القمامة على سبيل المثال مختلف.

http://stupiddumbguy.blogspot.com/2008/05/net-garbage-collection-behavior-for.html

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

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