İşlenmemiş bir özel durumun (herhangi bir iş parçacığından atılmış) yığın izini bir dosyaya nasıl yazabilirim?Başka bir konudan bir istisna atıldığında yığın izi yazma
Asılı uygulamada hata ayıklamaya yardımcı olmak için buna ihtiyacım var.
İşlenmemiş bir özel durumun (herhangi bir iş parçacığından atılmış) yığın izini bir dosyaya nasıl yazabilirim?Başka bir konudan bir istisna atıldığında yığın izi yazma
Asılı uygulamada hata ayıklamaya yardımcı olmak için buna ihtiyacım var.
teşekkür hepiniz, ama gördüğüm zaman ben Visual Studio'dan programı çalıştırarak, herhangi bir iş parçacığının işlenmemiş bir özel durumu atıldığında, konsol penceresi için .NET tarafından yazılan iz çıktı konsol penceresine yönlendirilmez.
Ben Visual Studio ayrılan programı çalıştırdığınızda sadece yönlendirilir. Bu nedenle, bu kod, işlenmeyen bir özel durum oluşturan tüm iş parçacıklarından tüm yığın izlerini görmek için çok iyi.
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 etkinliğine bir göz atın. Tam olarak ihtiyacın olan şey bu gibi görünüyor.
Sana AppDomain.UnhandledException etkinliğini dinleyerek bunu yapabilirsiniz inanıyoruz. WPF durumunda buna değer yanı Application.Current.Dispatcher.UnhandledException dinlerken olarak
aşağıdaki gibi ex.StackTrace tarafından catch bloğunda yığın izini alabilirsiniz:
try
{
//Your code;
}
catch(Exception ex)
{
string innerException = ex.InnerException;
string stackTrac = ex.StackTrace;
//Write this stackTrac to any file where you want
}