मैं एक डिबग श्रोता बनाया है (एक कॉल स्टैक के साथ) एक फाइल करने के लिए डीबग/कंसोल खिड़की से उत्पादन रीडायरेक्ट करने के लिए उपयोग कर रहा है, तो निम्न कोड का उपयोग:समस्या को एक फ़ाइल में डिबग आउटपुट पुनः निर्देशित श्रोता ट्रेस
void SomeMethod()
{
// Create a file for output .txt.
Stream debugFile = File.Create(fileName);
// create TextWriterTraceListener named "file"
TextWriterTraceListener debugWriter = new TextWriterTraceListener(debugFile, "file");
// add to debug listeners
Debug.Listeners.Add(debugWriter);
// set callstack to be shown
Debug.Listeners["file"].TraceOutputOptions |= TraceOptions.Callstack;
// set auto-flush
Debug.AutoFlush = true;
}
लेकिन आउटपुट मेरे द्वारा निर्दिष्ट फ़ाइल पर रीडायरेक्ट नहीं करेगा, यह हमेशा खाली रहता है।
मैं इसे अपने मुख्य रूप में निर्माता से बुला रहा हूं। क्या वह जगह है जहां मैं इसे किसी समस्या से बुला रहा हूं?
क्या मैं यहाँ प्राप्त करने के लिए कोशिश कर रहा हूँ, ताकि मैं उन्हें खोजने के लिए और उन्हें सही कर सकते हैं डिबग आउटपुट खिड़की एक कॉल स्टैक के साथ एक फ़ाइल में रखा से अपवाद है।
अद्यतन: कुछ शोध करने के बाद मैं एक निष्कर्ष यह है कि डीबग Listeners
संग्रह के लिए एक नया TraceListener
जोड़ने डीबग/कंसोल से उत्पादन रीडायरेक्ट नहीं करता है के लिए आया था। यह वास्तव में Write
, WriteLine
आदि का जवाब दे रहा है जैसे डिफ़ॉल्ट श्रोता। समस्या अभी भी बनी हुई है: डीबग/कंसोल विंडो के आउटपुट को कैप्चर कैसे करें और वहां दिखाई देने वाले अपवादों का स्टैक ट्रेस कैसे प्राप्त करें?
किसी के पास कोई विचार है?
क्या आप वाकई डीबग में शामिल होना चाहिए। लिस्टनर? कंसोल कंसोल। राइटलाइन और डीबग। राइटलाइन विभिन्न व्यवहार उत्पन्न करते हैं। यदि आप डीबग में श्रोता जोड़ रहे हैं, लेकिन कंसोल को कॉल कर रहे हैं, तो यह आपके द्वारा रिपोर्ट की जा रही समस्या का कारण बन सकता है। – JustLoren
@ जस्टलोरन - मुझे यकीन नहीं है कि आपका क्या मतलब है। मैं यहां क्या करने की कोशिश कर रहा हूं वह एक ही आउटपुट है जो मेरे पास विजुअल स्टूडियो में डीबग कंसोल विंडो में एक फ़ाइल में है, लेकिन प्रत्येक अपवाद के लिए कॉल स्टैक के साथ वहां होता है। – TheBoyan
आपको अपने फ़ंक्शन को इसे सेट अप करने के लिए मैन्युअल रूप से अपने डीबग श्रोता को लिखने का प्रयास करना चाहिए, फिर Debug.WriteLine ("डीबगर प्रारंभिक") को कॉल करना; यह सत्यापित करना चाहिए कि सब कुछ काम कर रहा है। यदि आप केवल ढांचे पर भरोसा कर रहे हैं, तो आप यह सुनिश्चित नहीं कर सकते कि आउटपुट विंडो वास्तव में कौन सी स्ट्रीम सुन रही है। – JustLoren