चेतावनी
MSDN प्रलेखन / डिबग स्विच के लिए (विजुअल स्टूडियो में यह डीबग जानकारी है) के बाहर के तारीख प्रतीत हो रहा है! यह वही है जो गलत है
यदि आप / डिबग: पूर्ण का उपयोग करते हैं , तो ध्यान रखें कि JIT अनुकूलित कोड की गति और आकार पर कुछ प्रभाव पड़ता है और कोड गुणवत्ता पर एक छोटा प्रभाव / डीबग के साथ: पूर्ण । हम अनुशंसा करते हैं / डीबग करें: रिलीज़ कोड जनरेट करने के लिए pdbonly या कोई PDB।
/ डीबग: pdbonly और / debug के बीच एक अंतर : पूर्ण यह है कि / डिबग के साथ: पूर्ण कंपाइलर एक का उत्सर्जन करता है DebuggableAttribute
, जिसका उपयोग JIT कंपाइलर को यह बताने के लिए किया जाता है कि डिबग जानकारी उपलब्ध है।
फिर, अब क्या सच है?
- Pdb-only - .NET 2.0 से पहले, यह रिलीज़ किए गए उत्पाद (ग्राहक मशीनों) से क्रैश डंप की जांच करने में मदद करता था। लेकिन इसने डिबगर को संलग्न नहीं होने दिया। .NET 2.0 से ऐसा नहीं है। यह है बिल्कुल के रूप में ही पूर्ण ।
- पूर्ण - यह हमें क्रैश डंप की जांच करने में मदद करता है, और हमें बिल्ड रिलीज करने के लिए डिबगर को संलग्न करने की भी अनुमति देता है। लेकिन MSDN के विपरीत, यह प्रदर्शन को प्रभावित नहीं करता (.NET 2.0 के बाद से)। यह बिल्कुल Pdb के समान है ।
यदि वे बिल्कुल समान हैं, तो हमारे पास ये विकल्प क्यों हैं? जॉन रॉबिंस (विंडोज़ डिबगिंग गॉड) ने पाया कि ये ऐतिहासिक कारणों से हैं।
.NET 1.0 में वापस मतभेद थे, लेकिन .NET 2.0 में ऐसा नहीं है। ऐसा लगता है कि .NET 4.0 उसी पैटर्न का अनुसरण करेगा। सीएलआर डिबगिंग टीम के साथ डबल-चेकिंग के बाद, कोई अंतर नहीं है।
क्या नियंत्रित करता है कि क्या जेटर एक डिबग बिल्ड करता है / स्विच स्विच। <...>
लब्बोलुआब यह है कि आप अपनी रिलीज़ बिल्ड / ऑप्टिमाइज़ + और किसी भी / डीबग स्विच के साथ बनाना चाहते हैं ताकि आप स्रोत कोड के साथ डीबग कर सकें।
फिर वह इसे साबित करने के लिए आगे बढ़ता है।
अब अनुकूलन एक अलग स्विच का हिस्सा है /optimize
(दृश्य स्टूडियो में इसे कहा जाता है Optimize code
)।
संक्षेप में, डीबगइन्फो की स्थापना pdb-only या पूर्ण के बावजूद, हमारे पास एक ही परिणाम होंगे। सिफारिश यह है कि किसी को भी इससे बचना चाहिए क्योंकि यह आपको जारी उत्पाद से क्रैश डंप का विश्लेषण करने या डीबगर संलग्न करने से वंचित करेगा।