2014-09-03 136 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); 
     } 
相关问题