سؤال

ربما يجب أن أعرف هذا بالفعل ، لكنني لست متأكدًا ولا أراه موثقًا.

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

أتساءل ماذا يحدث إذا نسيت التعليق على الرمز. لنفترض ، على سبيل المثال ، أنه خلال دورة التطوير ، أقوم بتتبع معلومات الخطأ التي قد تسجل اتصالًا إلى نافذة الإخراج باستخدام خط debug.write. من الواضح أن هذا على ما يرام أثناء التطور ، لكنني أتساءل عما إذا كان عندما أذهب مباشرة ، إذا كان هناك خطر هنا. هل يمكن لشخص أن يرفع مصحح أخطاء إلى Live Live Textraily وفخ هذا الإخراج؟ أم أنه شيء ينتج فقط الإخراج في Visual Studio؟

وماذا عن عندما نتحول من التصحيح إلى الإصدار؟ هل يتم تجاهل هذا الرمز من قبل المترجم إذا جمعنا الإصدار؟

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

المحلول

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

نصائح أخرى

System.Diagnostics.Debug لا توجد مكالمات الطريقة إلا عند تعريف رمز التجميع الشرطي "Debug". بشكل افتراضي ، يتم تعريف رمز "Debug" فقط لبناء التصحيح.

المجمعين الذين يدعمون ConditionalAttribute تجاهل المكالمات لهذه الأساليب ما لم يتم تعريف "Debug" كرمز لتجميع مشروط.

نظرًا لأن أساليب التصحيح جميعها لها سمة [مشروطة ("Debug)] ، إذا قمت بالتبديل من Debug إلى إصدار ، فلن تضطر إلى القلق بشأن ذلك حيث ستتم إزالة المكالمات إلى هذه الأساليب (إلى جانب التحسينات الأخرى من بناء الإصدار).

معلومات التصحيح مرئية فقط عند الركض وضع التصحيح. في وضع الإصدار لن تكون عبارات التصحيح مرئية (يمكنك استخدامها أثر بدلاً من تصحيح إذا كنت تريد أن تكون هذه العبارات مرئية في وضع الإصدار).

http://support.microsoft.com/kb/815788

تزويدك بتجميع بدون /d:DEBUG الخيار أو #define DEBUG, ، لا توجد مكالمات WriteLine الخاصة بك جسديًا في رمز الإصدار الخاص بك ؛ لا توجد طريقة لأي طرف ثالث لاستعادة أي معلومات من هذه المكالمات ، لأنها حرفيًا ليست موجودة في إصدار الإصدار.

مزيد من التفاصيل هنا: Debug Class (System.Diagnostics) على MSDN

يتم تمييز جميع أعضاء Debug تقريبًا بـ ConditionalAttribute. سيقوم المترجمون مثل C# بتخطي المكالمات إلى هذه الطرق أثناء بناء الإصدار ، لذلك أنت في الجانب الآمن.

معلومات الوضع هنا:http://msdn.microsoft.com/en-us/library/system.diagnostics.debug.aspx

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