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