डीबग और ट्रेस दोनों आपके एप्लिकेशन के लिए सामान्य त्रुटि लॉगिंग से परे अतिरिक्त संदेशों को आउटपुट करने के लिए उपयोग किए जाते हैं। प्रोग्रामर के लिए आउटपुट क्या है। विशिष्ट चीजें हैं जो लिखा जा सकता है विधि प्रविष्टियों/बाहर निकलता है, विधि तर्क मूल्यों, विधि वापसी मूल्यों, विन्यास सूचना है कि इस्तेमाल किया जा रहा, महत्वपूर्ण प्रदर्शन समय आदि हैं
डिबग और ट्रेस के बीच मुख्य अंतर यह है कि है ट्रेस रिलीज में मौजूद है डीबग नहीं है जबकि बनाता है। मुझे ट्रेस अधिक उपयोगी होने लगता है क्योंकि यह आपको उत्पादन के माहौल में आपके आवेदन के कामकाज के बारे में अतिरिक्त जानकारी प्राप्त करने की अनुमति देता है (माना जाता है कि आपने ट्रेस को शुरू करने के लिए जोड़ा है)। ट्रेस संदेशों को जोड़ने पर विचार करने की एक बात यह है कि एक ऐसी मुश्किल जानकारी के बारे में सोचना है जिसे आप एक्सेस करना चाहते हैं, यदि कोई मुश्किल उत्पादन समस्या पॉप अप हो जाती है।
डीबग और ट्रेस दोनों सशर्त रूप से संकलित हैं। डीबग (डिफ़ॉल्ट रूप से) डीबग बिल्ड में संकलित किया जाता है जबकि ट्रेस (डिफ़ॉल्ट रूप से) रिलीज बिल्ड में संकलित किया जाता है। सशर्त संकलन संकलन झंडे द्वारा निर्धारित किया जाता है (ट्रेस के लिए:/डी: ट्रेसी) या प्रीप्रोसेसर निर्देश (ट्रेस के लिए: # परिभाषित ट्रेसी)।
अच्छी बात यह है कि ये बयान विकास के दौरान आपको लाभ पहुंचा सकते हैं लेकिन संकलन ध्वज को बदलकर उत्पादन के निर्माण के लिए आसानी से हटाया जा सकता है।
आउटपुट
एक ट्रेस के उत्पादन में प्राप्त करने के लिए एक निशान श्रोता की आवश्यकता है। DefaultTraceListener
नामक एक डिफ़ॉल्ट ट्रेस श्रोता (आश्चर्य की बात नहीं) है। DefaultTraceListener
ट्रेस संदेशों को साझा मेमोरी में भेजता है (Win32 OutputDebugString
विधि के माध्यम से)।
ठीक है, लेकिन आप उन ट्रेस संदेशों को कैसे देखते हैं?
आपके लिए जानकारी पढ़ने के लिए प्रोग्राम चलाने का सबसे आसान तरीका है। DebugView ऐसा करने के लिए वास्तविक तथ्य है। बहुत कुछ इसे शुरू करें और संदेश दिखने लगेंगे।
आप आउटपुट को TextWriterTraceListener
या EventLogTraceListener
का उपयोग करके अन्य स्थानों पर भी निर्देशित कर सकते हैं।
तुम भी विन्यास के माध्यम से पता लगाने श्रोताओं जोड़ सकते हैं: आप पहले से ही एक प्रवेश प्रदाता (जैसे उद्यम लाइब्रेरी, log4net) का उपयोग कर रहे हैं तो आप के बाद से वे अपने दृष्टिकोण का उपयोग को देखने के लिए चाहते हो सकता है
<configuration>
<system.diagnostics>
<trace autoflush="false" indentsize="4">
<listeners>
<add name="myListener"type="System.Diagnostics.TextWriterTraceListener"initializeData="TextWriterOutput.log" />
<remove name="Default" />
</listeners>
</trace>
</system.diagnostics>
</configuration>
लगभग हमेशा समान सशर्त लॉगिंग कार्यक्षमता प्रदान करते हैं। हालांकि, वे Assert
या WriteIf
जैसी कार्यक्षमता प्रदान नहीं कर सकते हैं।
आपने 7 साल का उत्तर अस्वीकार कर दिया है? क्यों उत्सुक है? –
ठीक है, दोनों उत्तरों को एक ही दिन में एक दूसरे के भीतर बनाया गया था, यह आपको अपने दिमाग को बदलने के लिए 6 साल का समय लगा। अजीब व्यवहार स्पष्ट रूप से। –