2008-10-07 12 views
49

ऐसा लगता है किट्रेस नेट बीसीएल में बनाम डीबग

मोटे तौर पर ही कर रहे हैं, उल्लेखनीय अपवाद है कि डीबग उपयोग बाहर संकलित किया गया है साथ एक रिलीज विन्यास में।

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

आप साधन करने के लिए अपने कोड जा रहे हैं, यही कारण है कि आप कभी भी डीबग, का प्रयोग करेंगे के बाद से ट्रेस एक recompile बिना बंद कर दिया जा सकता है?

उत्तर

48

मुख्य अंतर वह है जो आप इंगित करते हैं: डीबग रिलीज में शामिल नहीं है, जबकि ट्रेस है।

इरादा अंतर, जैसा कि मैं समझता हूं, यह है कि विकास टीम अमीर, वर्णनात्मक संदेशों को उत्सर्जित करने के लिए डीबग का उपयोग कर सकती है जो उत्पाद के उपभोक्ता (ओं) के लिए बहुत विस्तृत (या खुलासा) साबित कर सकती है, जबकि ट्रेस का इरादा है उन संदेशों के उत्सर्जित करें जो अधिक विशेष रूप से एक अनुप्रयोग के उपकरण की दिशा में तैयार हैं।

अपने अंतिम प्रश्न का उत्तर देने के लिए, मैं डीबग को कोड के एक टुकड़े को रिलीज़ करने के उद्देश्य से उपकरण का उपयोग करने का एक कारण नहीं सोच सकता।

उम्मीद है कि इससे मदद मिलती है।

+6

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

+0

मुझे लगता है कि एक और अंतर यह है कि आप अपने आवेदन में [ट्रेस श्रोताओं] (http://msdn.microsoft.com/en-us/library/4y5y10s7 (v = vs.110) .aspx) को कॉन्फ़िगर कर सकते हैं और आउटपुट रूट कर सकते हैं तदनुसार ट्रेस का। विजुअल स्टूडियो में डिफ़ॉल्ट ट्रेस श्रोता, ट्रेस संदेशों को डीबग आउटपुट स्ट्रीम पर निर्देशित करेगा। – orad

+6

ट्रेसिंग कुछ ऐसा है जो ** ** को उत्पादन में इस्तेमाल किया जाना चाहिए। यह इतना महत्वपूर्ण है कि ** विंडोज़ के प्रत्येक ** उपप्रणाली में ट्रेसिंग कोड शामिल है। प्रत्येक हार्ड ड्राइव की तलाश है, हर मेमोरी आवंटन, प्रत्येक इंटरप्ट, सीपीयू संदर्भ स्विच, प्रत्येक थ्रेड शेड्यूल में ट्रेसिंग कोड का पता लगाया जाता है। विंडोज प्लेटफ़ॉर्म (ईटीडब्लू) के लिए इवेंट ट्रेसिंग एक असाधारण हल्के ट्रेसिंग सिस्टम है, जो कि किसी भी समय किसी भी व्यक्ति को सक्षम कर सकता है विंडोज पीसी [System.Diagnostics.Tracing.EventSource] (https://msdn.microsoft.com/en-us/library/system.diagnostics.tracing.eventsource.aspx) ईटीडब्लू को ट्रेस ईवेंट भेजने का प्रबंधित तरीका है। –

3

मैं ट्रेसिंग के लिए लॉग 4नेट का उपयोग करना चाहता हूं क्योंकि इसकी क्षमताएं अधिक लचीली और मजबूत हैं।

लेकिन वास्तविक डीबग संदेशों के लिए कि मैं कभी भी मेरे अलावा किसी अन्य व्यक्ति या किसी आंतरिक परीक्षक को देखने का इरादा नहीं रखता, तो शायद मैं डीबग के साथ रहूंगा।

+0

कौन सा लॉगगन ढांचा बेहतर है, यह पता चलता है कि log4net दूसरों की तुलना में अधिक लचीला या मजबूत नहीं है। http://stackoverflow.com/questions/4775194/when-should-i-use-tracing-vs-logger-net-enterprise-library-log4net-or-ukadc-di – sam

1

आपने अपने स्वयं के प्रश्न का उत्तर दिया है। यदि डीबग संदेश रहे, तो लोग उन्हें देख सकते थे। उदाहरण के लिए, मान लीजिए कि आप करते हैं:

 
Debug.WriteLine("Connecting to DB with username: blah and PW: pass"); 

कोई भी जो आपके कोड को डीकंपाइल करता है उसे देख सकता है। लेकिन यह परीक्षण के दौरान आपके लिए जानना बहुत महत्वपूर्ण हो सकता है।

ट्रेस अलग है। यदि आप ट्रेस करने जा रहे हैं, तो शायद मैं लॉग 4नेट का उपयोग करूंगा।

2

अत्यधिक प्रदर्शन संवेदनशील कोड ब्लॉक के लिए, ट्रेस संकलित-इन छोड़कर लेकिन अक्षम प्रदर्शन प्रदर्शन कर सकता है।

3

ट्रेस और डीबग के बीच एकमात्र अंतर यह है कि ट्रेस स्टेटमेंट को प्रोग्राम में डिफ़ॉल्ट रूप से शामिल किया जाता है जब इसे रिलीज बिल्ड में संकलित किया जाता है, जबकि डीबग कथन नहीं होता है।

इस प्रकार, डिबग वर्ग मुख्यतः, विकास के चरण में डीबगिंग के लिए प्रयोग किया जाता है, जबकि ट्रेस परीक्षण और अनुकूलन के लिए इस्तेमाल किया जा सकता करने के बाद आवेदन संकलित और जारी की है।

+2

यह पूरी तरह से मौजूद TRACE संकलन स्थिर पर निर्भर है, जो डीबग और रिलीज के लिए डिफ़ॉल्ट है। –

5

डीबग शुद्ध डिबगिंग उद्देश्यों के लिए उपयोग किया जाता है। यह डीबग निष्पादन (डीबग मोड) में समृद्ध संदेशों को उत्सर्जित करता है।

ट्रेस एप्लिकेशन डिबगिंग, बग फिक्सिंग और प्रोफाइलिंग (रिलीज के बाद) में मदद करता है।

डीबग क्लास रिलीज मोड में कोई उपयोग नहीं है।

+1

यह संकलन स्थिरांक ट्रेस और डेबग पर पूरी तरह से निर्भर है। –

+0

@VincePanuccio डिफ़ॉल्ट बिल्ड सेटिंग्स वे हैं जो हैं क्योंकि डीबग और ट्रेस का उपयोग इस उद्देश्य के संकेत के रूप में किया जाना है। हां, आप विभिन्न व्यवहार प्राप्त करने के लिए TRACE और DEBUG स्थिरांक बदल सकते हैं, लेकिन यह नहीं है कि दो वर्गों को किस प्रकार डिजाइन किया गया है। – Darryl

संबंधित मुद्दे