दिलचस्प पोस्ट
कैसे पोस्ट पैरामीटर 2 के साथ NSURLRequest बनाने के लिए? सी ++ में फ़ाइल संशोधन के लिए मैं अपने प्रोग्राम को कैसे देखूं? कुल बिना स्तंभों में पिवट पंक्तियां रैखिक विभाजन में गतिशील प्रोग्रामिंग समाधान को कैसे समझें? एकाधिक तर्क बनाम विकल्प ऑब्जेक्ट कैसे बाइट सरणी को स्ट्रिंग और इसके विपरीत रूपांतरित करने के लिए जीआईटी रिमोट अन्य एसएसएच पोर्ट के साथ जोड़ें कुछ मॉड्यूल आयात करने से पायथन कोड को रोकना? कितने क्षेत्रों द्वारा वस्तुओं की एक सरणी को सॉर्ट करने के लिए? रीसाइज़िंग विंडो के दौरान ऑटो आकार का आकार (फ़ॉन्ट आकार)? डिफ़ॉल्ट: सीएसएस के साथ लक्ष्य क्या बग ज़ूम करता है: 1; सीएसएस में ठीक करें? सी / सी ++ में libcurl का उपयोग करके फ़ाइल डाउनलोड करें एक संदर्भित मूल्य पर इतनी धीमी गति से फ़ंक्शन (जैसे स्ट्रेलन, गिनती आदि) क्यों कॉल कर रहे हैं? सुरुचिपूर्ण पायथन समारोह को सर्कल कैसीज में परिवर्तित करने के लिए?

डीबग बनाम रिलीज .नेट में

मेरे पिछले प्रश्न से जारी रखने के लिए , क्या एक व्यापक दस्तावेज़ है जो सी # एप्लिकेशन में डीबग और रिलीज़ मोड के बीच सभी उपलब्ध अंतरों को सूचीबद्ध करता है, और विशेष रूप से किसी वेब अनुप्रयोग में?

क्या अंतर हैं?

वेब के समाधान से एकत्रित समाधान "डीबग बनाम रिलीज .नेट में"

"डीबग" और "रिलीज़" केवल Visual Studio द्वारा परिभाषित पूर्वनिर्धारित प्रोजेक्ट कॉन्फ़िगरेशन के नाम हैं
मतभेदों को देखने के लिए, विजुअल स्टूडियो में प्रोजेक्ट प्रॉपर्टी में बिल्ड टैब को देखें।

वीएस 2005 में अंतर में शामिल हैं:

  • DEBUG निरंतर डीबग कॉन्फ़िगरेशन में परिभाषित है

  • रिलीज़ कॉन्फ़िगरेशन में अनुकूलन कोड सक्षम है

साथ ही आप "उन्नत" बटन पर क्लिक करके अन्य अंतर देख सकते हैं

पर तुम कर सकते हो:

  • प्रोजेक्ट प्रॉपीकीज / बिल्ड में डीबग और रिलीज़ कॉन्फ़िगरेशन के लिए बिल्ड सेटिंग बदलें

  • समाधान एक्सप्लोरर में समाधान पर राइट-क्लिक करके और कॉन्फ़िगरेशन प्रबंधक को चुनकर अपने स्वयं के कस्टम विन्यास बनाएं

मुझे लगता है कि DEBUG निरंतर का व्यवहार काफी स्पष्ट है (# पूर्वप्रक्रमक निर्देश या ConditionalAttribute में संदर्भित किया जा सकता है)। लेकिन मुझे बिल्कुल भी ऑप्टिमाइज़ेशन सक्षम किए जाने वाले किसी भी व्यापक दस्तावेज के बारे में पता नहीं है – वास्तव में मुझे संदेह है कि माइक्रोसॉफ्ट बिना सूचना के अपने अनुकूलक को बढ़ाने के लिए स्वतंत्र होना चाहेंगे

एक दस्तावेज़ नहीं है जो अंतर को सूचीबद्ध करता है पहले से सूचीबद्ध मतभेदों के अलावा, डीबग मोड में संकलित अधिकांश जेआईटी कंपाइलर ऑप्टिमाइज़ेशन जो कि रनटाइम पर किया जाता है और प्रतीक डेटाबेस फाइल (.पीडीबी) में पूरी डीबग जानकारी का उत्सर्जन करता है।

एक और बड़ा अंतर यह है कि जीसी के व्यवहार में कुछ अलग है कि जेआईटी कंपाइलर डिबगिंग सत्रों का समर्थन करने के लिए जीसी। किपएलिव () के लिए उपयुक्त / आवश्यक के रूप में कॉल डालेगा।

मुझे एक संक्षिप्त दस्तावेज़ के बारे में पता नहीं है, लेकिन:

  • डिबग। रिलीज में लिखें कॉल को छीन लिया गया है
  • रिलीज में, आपके कॉलस्टैक्स अनुकूलन के कारण थोड़ा "अजीब" लग सकता है, जैसा कि स्कॉट हंसेलमैन द्वारा उल्लिखित किया गया है

डिबग और रिलीज अलग समाधान कॉन्फ़िगरेशन के लिए केवल लेबल हैं I यदि आप चाहें तो आप दूसरों को जोड़ सकते हैं यदि आप चाहें तो आप कॉन्फ़िगरेशन प्रबंधक से अधिक कॉन्फ़िगरेशन जोड़ सकते हैं-

http://msdn.microsoft.com/en-us/library/kwybya3w.aspx

प्रमुख अंतर –

1.एक डीबग डीएलएल में कई अतिरिक्त निर्देश जोड़े गए हैं ताकि आपको विजुअल स्टूडियो में प्रत्येक स्रोत कोड लाइन पर ब्रेकपॉइंट सेट कर सकें। इसके अलावा कोड अनुकूलित नहीं किया जाएगा, आप कोड को डीबग करने के लिए सक्षम करने के लिए againg। रिलीज़ संस्करण में इन अतिरिक्त निर्देश हटा दिए जाते हैं

2. पीडीबी फ़ाइल केवल डिबग मोड में बनाई जाती है और रिलेज मोड में नहीं।

3.In रिलीज़ मोड में सीपीडीई ऑप्टिमाइज़र द्वारा अनुकूलित है जो कि जेआईटी कंपाइलर में बनाया गया है। यह निम्न अनुकूलन करता है:

• विधि इनलाइनिंग – एक विधि कॉल विधि के कोड इंजेक्शन द्वारा प्रतिस्थापित किया गया है।

• सीपीयू रजिस्टर आवंटन – स्थानीय चर और विधि तर्क किसी सीपीयू रजिस्टर में कभी भी (या कम बार) बिना स्टैक फ्रेम में वापस संग्रहीत किए जा सकते हैं।

• सरणी सूचकांक जांच उन्मूलन – एक महत्वपूर्ण अनुकूलन जब एरे के साथ काम करना (सभी .NET संग्रह वर्ग आंतरिक रूप से एक सरणी का उपयोग करते हैं)। जब JIT कंपाइलर यह सत्यापित कर सकता है कि किसी लूप की सीमा से बाहर सरणी को सूचीबद्ध नहीं किया जाता है तो यह सूचकांक जांच को समाप्त करेगा।

• Loop unrolling - Short loops (up to 4) with small bodies are eliminated by repeating the code in the loop body. • Dead code elimination - A statement like if (false) { /.../ } gets completely eliminated. • Code hoisting- Code inside a loop that is not affected by the loop can be moved out of the loop. • Common sub-expression elimination. x = y + 4; z = y + 4; becomes z = x 

एक प्रमुख प्रदर्शन क्षेत्र यदि आप किसी भी एएसपी.नेट अजाक्स नियंत्रण का उपयोग कर रहे हैं: रिलीज में चलने पर डीबग की जानकारी जावास्क्रिप्ट लाइब्रेरी से हटा दी जाती है, और मैंने जटिल पृष्ठों पर बड़े preformance सुधार देखा है। इस सेटिंग के आधार पर अन्य वेब आधारित संसाधन या तो कैश किए गए या कैश्ड नहीं किए जा सकते हैं।

इसके अलावा, याद रखें कि एक वेब अनुप्रयोग में डीबग / रिलीज वेब। web.config फ़ाइल से तय होती है, दृश्य स्टूडियो में आपकी सेटिंग्स नहीं।

 <system.web> <compilation debug="true"> 

अधिक जानकारी:

  • डिबग = "सच्चे" सक्षम के साथ उत्पादन एएसपी.नेट अनुप्रयोगों को न चलाएं

GDI + के साथ आरेखण डीबग मोड में काफी धीमी है।

आप उस कोड के कुछ भाग को भी प्रबंधित कर सकते हैं जिसे आप केवल डीबग में चलाना चाहते हैं या केवल पूर्वप्रोसेसर मार्कअप के साथ रिलीज में:

  #if DEBUG // Some code running only in debug #endif 

या

  #if NOT DEBUG // Some code running only in release #endif 

प्रसारित संस्करण:

  1. काफी तेजी से (सबसे महत्वपूर्ण), अनुकूलित किया गया है

  2. डीबग नहीं किया जा सकता (चरण दर चरण)

  3. और "डीबग" निर्देश में लिखा गया कोड शामिल नहीं है

डिबग बनाम रिलीज़ बिल्ड के बीच अंतर क्या है?

मैं एक त्रुटि संदेश मिला जब मैं एक अन्य मशीन को निष्पादन योग्य फ़ाइल वितरित करता हूं जो संकेत करता है कि सिस्टम MSVCP110D.dll को मिट जाता है।

इस समस्या का समाधान स्टैक ओवरफ्लो प्रश्न में कहा गया है Visual Studio MSVCP110D.dll अनुपलब्ध है

में XXXXD.dll डी मतलब है कि DLL फ़ाइल डीएलएल फ़ाइल का एक डीबग संस्करण है। लेकिन एमएस विज़ुअल सी ++ रीडिस्टिंगबल पैकेज में केवल DLL फ़ाइलों का रिलीज़ संस्करण शामिल है।

इसका मतलब है कि यदि आपको Visual C ++ द्वारा विकसित किए गए प्रोग्राम को वितरित करने की आवश्यकता है तो आपको इसे रिलीज़ मोड में बनाने की आवश्यकता है। और आपको लक्ष्य मशीन पर भी एमएस विज़ुअल सी ++ रीडायरेबरेबरेबरेबल (सही संस्करण) स्थापित करने की ज़रूरत है।

इसलिए मुझे लगता है कि यह डिबग और रिलीज़ मोड के बीच महत्वपूर्ण अंतर का एक है।