2012-11-27 33 views
5

मैं एक अनचाहे अपवाद (किसी थ्रेड से फेंक दिया गया) के स्टैक ट्रेस को फ़ाइल में कैसे लिख सकता हूं?स्टैक ट्रेस लिखें जब किसी अन्य थ्रेड से अपवाद फेंक दिया जाता है

मुझे इसे लटकाने वाले एप्लिकेशन को डीबग करने में मदद करने के लिए इसकी आवश्यकता है।

उत्तर

1

धन्यवाद आप सभी, लेकिन मैंने देखा है कि जब मैं विजुअल स्टूडियो से प्रोग्राम को चलाना जो ट्रेस के आउटपुट को .NET द्वारा कंसोल विंडो में लिखा गया है जब किसी थ्रेड से एक अनचाहे अपवाद फेंक दिया जाता है, उसे कंसोल विंडो पर रीडायरेक्ट नहीं किया जाता है।

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

Trace.Listeners.Clear(); 

     TextWriterTraceListener twtl = new TextWriterTraceListener(Path.Combine(Environment.CurrentDirectory, "logfile.txt")); 
     twtl.Name = "TextLogger"; 
     twtl.TraceOutputOptions = TraceOptions.ThreadId | TraceOptions.DateTime | TraceOptions.Callstack; 

     ConsoleTraceListener ctl = new ConsoleTraceListener(false); 
     ctl.TraceOutputOptions = TraceOptions.DateTime; 

     Trace.Listeners.Add(twtl); 
     Trace.Listeners.Add(ctl); 
     Trace.AutoFlush = true; 
4

AppDomain.UnhandledException ईवेंट पर एक नज़र डालें। ऐसा लगता है कि यह वही है जो आपको चाहिए।

0

आप नीचे दिए गए जैसे ex.StackTrace द्वारा कैच ब्लॉक में ढेर ट्रैक प्राप्त कर सकते हैं:

try 
{ 
    //Your code; 
} 
catch(Exception ex) 
{ 
    string innerException = ex.InnerException; 
    string stackTrac = ex.StackTrace; 
    //Write this stackTrac to any file where you want 
} 
संबंधित मुद्दे