我安装了Windows Forms .NET 3.5应用程序并正确安装。尝试运行它时,应用程序崩溃,并显示典型的Microsoft Windows错误对话框。您知道要求您发送错误报告的那个。
我的问题是,如何才能看到实际导致程序无法启动的原因?
应用程序在我的开发机器上运行良好,问题是在安装时使用我创建的安装文件在另一台计算机上运行。
有没有办法在不在开发机器上运行时看到'innerException'?
答案 0 :(得分:2)
除了检查Windows事件查看器(来自计算机管理)之外,您还可以尝试在程序周围构建一些错误记录。如果您扩展Main()
方法以包含以下行,您将能够获得有关程序失败原因的更多信息:
[STAThread]
static void Main()
{
Application.ThreadException += new ThreadExceptionEventHandler(Application_ThreadException);
Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
Application.Run(new Form1());
}
private static void Application_ThreadException(
object sender, ThreadExceptionEventArgs e)
{
//Log error here using e.Exception
}
static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
//Log error here using (Exception)e.ExceptionObjecte.Exception
}
您可以使用StreamWriter
将错误记录到简单的文本文件中string dateStr = DateTime.Now.ToString("yyyy-MM-dd");
StreamWriter sw = File.AppendText(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "ErrorLog_" + dateStr + ".log"));
sw.WriteLine(exception);
答案 1 :(得分:1)
这些是您拥有的默认选项:
(如果您现在需要结果,并且没有时间深入研究WinDbg和相关工具的高级调试,我只想在应用程序中添加一些跟踪。)
答案 2 :(得分:0)
你检查了EventLog吗?如果您的程序启动,然后开始崩溃。把EventLog.WriteEntry(exceptionMessage)。如果没有,最好的方法是看看它是EventLog。