2012-11-27 59 views

回答

1

感謝你的一切,但我所看到的是,當我從Visual Studio運行程序時,從任何線程拋出未處理的異常時,由.NET編寫的跟蹤輸出到控制檯窗口不會重定向到控制檯窗口。

當我從Visual Studio運行程序時,它只是重定向。 因此,這段代碼非常好,可以看到來自任何線程的所有堆棧跟蹤,這些線程拋出了一個未處理的異常

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; 
0

您可以通過ex.StackTrace得到catch塊堆棧跟蹤象下面這樣:

try 
{ 
    //Your code; 
} 
catch(Exception ex) 
{ 
    string innerException = ex.InnerException; 
    string stackTrac = ex.StackTrace; 
    //Write this stackTrac to any file where you want 
}