我有一个 C# 应用程序,它有时会因为未知原因而崩溃。因此,我想找到故障转储文件但它不存在。我还编写了一个引发DivideByZero
异常(未处理)的小应用程序。这样做的后果:在一个系统上程序在没有任何消息的情况下关闭,在另一个系统(VM)上,我得到一个简单的崩溃报告,它想要将数据发送给 Microsoft。
我配置drwtsn.exe
和注册表设置。我也尝试使用WinDbg
没有成功。
有人知道我如何强制系统写入转储文件吗?
最好的问候, 埃尔
我有一个 C# 应用程序,它有时会因为未知原因而崩溃。因此,我想找到故障转储文件但它不存在。我还编写了一个引发DivideByZero
异常(未处理)的小应用程序。这样做的后果:在一个系统上程序在没有任何消息的情况下关闭,在另一个系统(VM)上,我得到一个简单的崩溃报告,它想要将数据发送给 Microsoft。
我配置drwtsn.exe
和注册表设置。我也尝试使用WinDbg
没有成功。
有人知道我如何强制系统写入转储文件吗?
最好的问候, 埃尔
您需要为 AppDomain.UnhandledException 事件编写事件处理程序。记录 e.ExceptionObject.ToString() 值几乎总是足够好,堆栈跟踪会告诉您代码是如何陷入困境的。
P/Invoking MiniDumpWriteDump() 从 dbghelp.dll 也是可能的,你会得到一个 .dmp 文件,你可以用它来分析 WinDbug 的异常。Dbghelp.dll 在 Vista 和 Win7 上可用,您可以从早期版本的 Windows 调试工具下载中获取它。但是,您无法从该小型转储中获得良好的托管堆栈跟踪,直到 VS2010 发布。
ADPlus 是最简单的方法。大量文档从这里开始:http: //support.microsoft.com/kb/286350