2012-02-27 14 views
424

मैं डिबगिंग उद्देश्यों के लिए आउटपुट विंडो में एक संदेश लिखने की कोशिश कर रहा हूं। मैंने जावा के system.out.println("") जैसे फ़ंक्शन की खोज की। मैंने Debug.Write, Console.Write, और Trace.Write की कोशिश की। यह कोई त्रुटि नहीं देता है, लेकिन यह कुछ भी प्रिंट नहीं करता है।विजुअल स्टूडियो की आउटपुट विंडो में लिखना?

"डीबीयूजी निरंतर परिभाषित करें" और "ट्रेसी निरंतर परिभाषित करें" विकल्प चेक किए गए हैं।

मेनू उपकरणविकल्पडिबगिंग विकल्प चेक नहीं किया "तत्काल खिड़की करने के लिए सभी आउटपुट विंडो पाठ पुन: निर्देशित"।

विन्यास: सक्रिय (डीबग करें)

नोट: मैं जादूगर "विंडोज फॉर्म्स आवेदन" के रूप में अगर प्रासंगिक के साथ एक परियोजना बनाई। मुझे नहीं पता कि कहां देखना है।

+17

'Debug.WriteLine()' –

+6

का उपयोग करने का प्रयास करें चूंकि यह एक पुरानी पोस्ट है, इसलिए मैं इसे प्रश्न के दौरान ठोकर खाने वालों के लिए एक टिप्पणी के रूप में जोड़ दूंगा। वास्तव में कोड बदलने के बजाय, आप ट्रेसपॉइंट्स नामक विशेष ब्रेकपॉइंट्स का भी उपयोग कर सकते हैं। [एमएसडीएन दस्तावेज] देखें (http://msdn.microsoft.com/en-us/library/vstudio/232dxah7 (v = vs.100) .aspx) –

+10

बस एक अनुस्मारक कि Debug.WriteLine() केवल चलने पर ही काम करेगा डीबग में इसका मतलब है कि इसे F5 के साथ चलाना और CTRL-F5 नहीं। यह याद करना आसान है। –

उत्तर

529

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

+1

धन्यवाद। मुझे लगता है कि आउटपुट को लिखने का कोई तरीका नहीं है अगर मैं डिबगिंग (ctrl-f5) के बिना शुरू करता हूं? –

+1

मुझे लगता है कि आप इसे ढूंढ रहे हैं: http://stackoverflow.com/questions/562590/c-sharp-net-how-to-display-a-message-in-the-output-window-without-being- इन-डेब्यू –

+0

फिर से धन्यवाद लेकिन यह मेरे लिए काम नहीं किया गया है। ट्रेस निरंतर परिभाषित होने के बावजूद ट्रेस डीबगिंग मोड के बिना प्रिंट नहीं करता है। –

39
Debug.WriteLine 

वह है जो आप खोज रहे हैं।

यदि नहीं, तो ऐसा करने का प्रयास करें:

मेनू उपकरणविकल्पडिबगिंग → सही का निशान हटाएँ तत्काल आउटपुट भेजें।

+1

संभवतः डीबग। राइट() कैरिज रिटर्न डालने में नहीं है, इसलिए संदेशों को बफर किया जा रहा है? –

+0

यकीन नहीं है कि मैं –

+1

प्रश्न को पढ़ना याद करता हूं, जब तक मीका ने जो कुछ किया, उसके बाद तक मैं डीबग। राइटलाइन ("स्ट्रिंग") नहीं देख रहा था। 'टूल्स | ऑप्शन | अनइकेक डिबगिंग तत्काल' – Skindeep2366

14

आप

MessageBox.Show() 

या

द्वारा खोजे जा रहे
Debug.Writeline() 
+5

'संदेशबॉक्स। शो()' बहुत परेशान हो सकता है जब आप डिबगिंग उद्देश्यों के लिए एकाधिक मान लिखना चाहते हैं। – Dementic

+0

प्रश्न "विजुअल स्टूडियो की आउटपुट विंडो के लिए लिख रहा था?" एक संदेश बॉक्स में नहीं। –

+0

@AmirTwito एक संदेश बॉक्स एक आउटपुट विंडो है। – ProfK

108

यह डिबग आउटपुट विंडो पर लिखेंगे:

using System.Diagnostics; 

Debug.WriteLine("Send to debug output."); 
+1

मेरे लिए यह "आउटपुट" तत्काल विंडो – nuander

+0

पर मैंने यूनिट परीक्षणों के सेट पर यह कोशिश की। मैंने चयनित परीक्षण को डीबग किया, लेकिन डीबग विंडो में प्रिंट करने की कोशिश करने के लिए कुछ भी नहीं था। –

+0

यह डीबग विंडो में आउटपुट करता है, हालांकि, वेब पेज बंद करने के बाद ही। जब मैं कोड निष्पादित करता हूं तो मैं तत्काल प्रदर्शन करना चाहता हूं। एक मिनट रुको - मुझे पता चला कि कोड निष्पादित होने पर आउटपुट विंडो छिपी हुई है। अगर मैं खिड़की प्रदर्शित करता हूं, तो मेरा आउटपुट वहां होता है। –

61

उपयोग:

System.Diagnostics.Debug.WriteLine("your message here"); 
16

मेरे लिए, केवल ट्रेस नाम स्थान और नहीं डीबग एक काम किया:

System.Diagnostics.Trace.WriteLine("message"); 

मैं विजुअल स्टूडियो 2010 के तहत सी # प्रोजेक्ट में काम कर रहा हूं।दृश्य स्टूडियो के उत्पादन में खिड़की के

+2

मैं वीएस 2013 प्रोफेशनल का उपयोग कर रहा हूं और विजुअल स्टूडियो यूनिट टेस्ट फ्रेमवर्क का उपयोग करके यूनिट टेस्ट से आउटपुट प्राप्त करने का प्रयास कर रहा हूं। ऐसा लगता है कि परीक्षण दोहन कैप्चर करता है और डीबग.राइटलाइन को रीडायरेक्ट करता है लेकिन Trace.WriteLine नहीं। और आप ट्रेस आउटपुट को तब तक नहीं देख पाएंगे जब तक कि आप परीक्षण डीबग न करें (न केवल उन्हें चलाएं)। – yoyo

0

प्रिंट:

Debug.Writeline(); 
4

कॉल

System.Diagnostics.Debug.WriteLine("message"); 

में विफल रहता है जब .NET Core (वी 1.0 या 1.1) के साथ काम।

हमें Microsoft.Extensions.Logging से लॉगर बनाने और उपयोग करने के लिए माना जाता है, लेकिन वह लॉग केवल dotnet.exe पॉपअप कंसोल विंडो में दिखाई देता है, विजुअल स्टूडियो की आउटपुट विंडो में नहीं।

+0

तो Debug.WriteLine(), Console.WriteLine() और Trace.WriteLine() .NET कोर के लिए आउटपुट में कुछ भी आउटपुट नहीं कर रहे हैं? लॉगक्लास लिखने के बिना किसी प्रकार के सरल लॉगिंग का उपयोग करने का कोई तरीका?टूल्स> विकल्प> डिबगिंग में खोजा है और संभावित समाधानों के लिए "आउटपुट दिखाएं:" चेक किया है। –

0

Visual Studio 2015 में मेरे लिए काम किया है:

OutputDebugStringW(L"Write this to Output window in VS14."); 

OutputDebugStringW here के लिए दस्तावेज़ीकरण पढ़ें।

enter image description here ध्यान दें कि यह विधि केवल काम करता है आप अपने कोड (debug mode)

+1

क्या वह सी ++ है? प्रश्न टैग किया गया है [टैग: सी #]। – jpmc26

0

इस मूल प्रश्न का उत्तर नहीं है डिबगिंग रहे हैं। लेकिन जब से मुझे ऑब्जेक्ट डेटा को इंटरैक्टिव डंपिंग करने के साधनों की खोज करते समय यह प्रश्न मिला, तो मुझे लगा कि दूसरों को इस बहुत ही उपयोगी विकल्प का उल्लेख करने से फायदा हो सकता है।

मैंने अंततः कमांड विंडो का उपयोग किया और Debug.Print कमांड दर्ज किया, जैसा कि नीचे दिखाया गया है। इसने एक प्रारूप में एक मेमोरी ऑब्जेक्ट मुद्रित किया जिसे टेक्स्ट के रूप में कॉपी किया जा सकता है, जो कि मुझे वास्तव में जरूरी है।

> Debug.Print <item> 

    id: 1 
    idt: null 
    igad: 99 
    igbd: 99 
    gl_desc: "New #20" 
    te_num: "1-001-001-020" 
2

यह एक तीसरी पार्टी के ढांचे, अर्थात् Serilog की आवश्यकता है, लेकिन मैं फिर भी मिल गया है यह एक बहुत कुछ जगह मैं इसे देख सकते हैं करने के लिए उत्पादन हो रही है साथ चिकनी अनुभव किया जाना है।

आपको पहले सेरिलोग के Trace sink इंस्टॉल करने की आवश्यकता है। एक बार स्थापित है, तो आप इस तरह लकड़हारा स्थापित करने के लिए की जरूरत है:।

Logger = new LoggerConfiguration() 
    .MinimumLevel.Verbose() 
    .WriteTo.Trace() 
    .CreateLogger(); 

(आप एक अलग न्यूनतम स्तर सेट या config मूल्य या सामान्य Serilog कार्यक्षमता में से किसी को सेट कर सकते हैं तुम भी Trace लकड़हारा सेट कर सकते हैं किसी विशिष्ट स्तर पर कॉन्फ़िगरेशन ओवरराइड करने के लिए, या फिर भी आप ऐसा करना चाहते हैं)

तो फिर तुम सिर्फ सामान्य रूप से संदेशों लॉग इन करें और वे अपने आउटपुट विंडो में दिखाई देते हैं:।

Logger.Information("Did stuff!"); 

इस तरह की तरह प्रतीत नहीं होता एक बड़ा सौदा, तो मुझे कुछ addit समझाओ आयनिक फायदे मेरे लिए सबसे बड़ी एक था कि मैं एक साथ दोनों आउटपुट खिड़की और सांत्वना लिए लॉग ऑन कर सकते हैं:,

Logger = new LoggerConfiguration() 
    .MinimumLevel.Verbose() 
    .WriteTo.Trace() 
    .WriteTo.Console(standardErrorFromLevel: LogEventLevel.Error) 
    .CreateLogger(); 

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

नीचे की रेखा यह है कि ऐसा करने के लिए सेरिलोग का उपयोग करके संदेशों को कई स्थानों पर डंप करना वाकई आसान हो गया है, यह सुनिश्चित करने के लिए कि मैं हमेशा इसे कैसे चलाता हूं, इस पर ध्यान दिए बिना मैं आसानी से आउटपुट तक पहुंच सकता हूं।

यह भी बहुत कम सेट अप और कोड की आवश्यकता है।

+1

सेरिलोग में अब https://github.com/serilog/serilog-sinks-debug पर एक "डीबग" सिंक भी है जो समान तरीके से कार्य करता है, लेकिन थोड़ा अच्छा स्वरूपण है :-) एचटीएच! –

+0

.... मैं वास्तव में डाउनवोट के बारे में उलझन में हूं। – jpmc26

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