मैं एक अनचाहे अपवाद (किसी थ्रेड से फेंक दिया गया) के स्टैक ट्रेस को फ़ाइल में कैसे लिख सकता हूं?स्टैक ट्रेस लिखें जब किसी अन्य थ्रेड से अपवाद फेंक दिया जाता है
मुझे इसे लटकाने वाले एप्लिकेशन को डीबग करने में मदद करने के लिए इसकी आवश्यकता है।
मैं एक अनचाहे अपवाद (किसी थ्रेड से फेंक दिया गया) के स्टैक ट्रेस को फ़ाइल में कैसे लिख सकता हूं?स्टैक ट्रेस लिखें जब किसी अन्य थ्रेड से अपवाद फेंक दिया जाता है
मुझे इसे लटकाने वाले एप्लिकेशन को डीबग करने में मदद करने के लिए इसकी आवश्यकता है।
धन्यवाद आप सभी, लेकिन मैंने देखा है कि जब मैं विजुअल स्टूडियो से प्रोग्राम को चलाना जो ट्रेस के आउटपुट को .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;
AppDomain.UnhandledException ईवेंट पर एक नज़र डालें। ऐसा लगता है कि यह वही है जो आपको चाहिए।
मेरा मानना है कि आप AppDomain.UnhandledException ईवेंट सुनकर ऐसा कर सकते हैं। WPF के मामले इसके लायक के रूप में अच्छी Application.Current.Dispatcher.UnhandledException को सुनने में
आप नीचे दिए गए जैसे 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
}