1

我有一个 C# 应用程序,它有时会因为未知原因而崩溃。因此,我想找到故障转储文件但它不存在。我还编写了一个引发DivideByZero异常(未处理)的小应用程序。这样做的后果:在一个系统上程序在没有任何消息的情况下关闭,在另一个系统(VM)上,我得到一个简单的崩溃报告,它想要将数据发送给 Microsoft。

我配置drwtsn.exe和注册表设置。我也尝试使用WinDbg没有成功。

有人知道我如何强制系统写入转储文件吗?

最好的问候, 埃尔

4

2 回答 2

3

您需要为 AppDomain.UnhandledException 事件编写事件处理程序。记录 e.ExceptionObject.ToString() 值几乎总是足够好,堆栈跟踪会告诉您代码是如何陷入困境的。

P/Invoking MiniDumpWriteDump() 从 dbghelp.dll 也是可能的,你会得到一个 .dmp 文件,你可以用它来分析 WinDbug 的异常。Dbghelp.dll 在 Vista 和 Win7 上可用,您可以从早期版本的 Windows 调试工具下载中获取它。但是,您无法从该小型转储中获得良好的托管堆栈跟踪,直到 VS2010 发布。

于 2010-02-01T17:35:35.507 回答
1

ADPlus 是最简单的方法。大量文档从这里开始:http: //support.microsoft.com/kb/286350

于 2010-02-01T16:02:33.037 回答