C# 从崩溃的EXE中查找堆栈跟踪日志

C# 从崩溃的EXE中查找堆栈跟踪日志,c#,C#,我有一个正在运行的c#控制台应用程序。我已经发布了它,因为我想在几台计算机上做一些测试 应用程序有时会导致错误和弹出窗口,迫使我关闭应用程序,从而关闭控制台,然后才能查看相关异常 有没有什么方法可以让我看到类似于在VisualStudio中运行它的堆栈跟踪日志?我认为这可能通过Windows事件查看器实现,但我不能完全确定这一点。或者至少允许控制台可见,并且在我确认有错误时不让它自动关闭。您可以执行您提到的所有操作。e、 要查看控制台窗口中的错误,可以在代码周围放置一个try-catch块,并调

我有一个正在运行的c#控制台应用程序。我已经发布了它,因为我想在几台计算机上做一些测试

应用程序有时会导致错误和弹出窗口,迫使我关闭应用程序,从而关闭控制台,然后才能查看相关异常


有没有什么方法可以让我看到类似于在VisualStudio中运行它的堆栈跟踪日志?我认为这可能通过Windows事件查看器实现,但我不能完全确定这一点。或者至少允许控制台可见,并且在我确认有错误时不让它自动关闭。

您可以执行您提到的所有操作。e、 要查看控制台窗口中的错误,可以在代码周围放置一个try-catch块,并调用console.WriteLine()和console.ReadLine()方法

还有stacktrace.tostring()方法-例如

控制台应用程序会自动关闭,即使您在代码中放入了Console.WriteLine()。您需要的是末尾的Console.ReadLine(),可能在try-catch块的最后一部分

这样,控制台窗口将保持打开状态

您还可以通过控制台ap将事件写入事件日志,并在事件查看器中查看它们

这是通过使用System.Diagnostics命名空间的EventLog.CreateEventSource方法完成的。链接如下:

另一种方法是使用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);
        }