2014-09-03 77 views
0

我有一個正在運行的c#控制檯應用程序。我已經發布了它,因爲我想在幾臺電腦上做一些測試。從崩潰的EXE中查找堆棧跟蹤日誌

應用程序有時會導致一個錯誤和一個Window彈出窗口,迫使我關閉應用程序,然後關閉控制檯,然後才能查看有問題的異常。

有沒有什麼辦法可以看到類似在Visual Studio中運行它的堆棧跟蹤日誌?我認爲這可能是通過Windows事件查看器,但我不完全確定這一點。或者至少允許控制檯可見並且在我確認存在錯誤時不會自動關閉。

回答

1

你可以做所有你提到的事情。例如要查看控制檯窗口中的錯誤,可以在代碼中放置一個try catch塊並調用Console.WriteLine()和Console.ReadLine()方法。

還有stacktrace.tostring()方法 - 例如,

http://msdn.microsoft.com/en-us/library/system.diagnostics.stacktrace.tostring(v=vs.110).aspx

控制檯應用程序自動關閉,即使你把Console.WriteLine()在你的代碼。你需要的是最後的Console.ReadLine(),也許在你的try catch塊的finally部分。

這樣,控制檯窗口將保持打開狀態。

您也可以通過控制檯ap將事件寫入事件日誌,並在事件查看器中查看它們。

這是通過使用System.Diagnostics命名空間的EventLog.CreateEventSource方法完成的。下面的鏈接:

http://support.microsoft.com/kb/307024

另一種方法是使用system.IO寫行日誌文件(如.txt文件),所以你可以在錯誤回頭看,如果該過程在深夜跑例如。在這種情況下,你可以使用如下代碼:

public static void LogMessage(string message) 
    { 
     TextWriter textWriter = new StreamWriter("download.log", true); 
     textWriter.WriteLine(message); 
     textWriter.Close(); 
    } 

,然後在您的例外:

catch (Exception ex) 
     { 
      Console.WriteLine(ex.Message); 
      Logging.LogMessage(ex.Message); 
     } 
相關問題