假设我有一个.NET应用程序崩溃,当我关闭它时,我想使用DebugDiag来查看发生了什么。所以我们应该创建一个转储文件。我的问题是我们什么时候创建这个转储文件?我应该在启动应用程序时创建它吗?好吧,如果我这样做,它说在这个临时位置创建了一个转储文件......好吧..然后我继续工作应用程序并让它崩溃,但我的困惑是它很早就创建了转储文件,但是崩溃发生在最后,所以即使转储文件有用吗?它是否像我们使用该应用程序后自动更新?
答案 0 :(得分:3)
对于崩溃(通常是未处理的异常),您应该在异常成为第二次机会异常时创建转储文件。我对DebugDiag不太熟悉,但是adplus(Windows调试工具)和ProcDump等工具都可以让你为它创建转储。
在某些情况下,您可能还希望为第一次机会异常创建转储(即在任何代码处理异常之前)。例如。如果导致崩溃的异常包装了其他一些异常,那么此时可能没有足够的信息。在这些情况下,在第一次机会异常时创建转储文件将为您提供有关原始异常状态的详细信息。
答案 1 :(得分:1)
您可以配置窗口以在进程崩溃时创建转储文件。默认情况下不启用此功能:Collecting User-Mode Dumps。 Windows XP的过程不同:Capturing Application Crash Dumps。获得转储文件后,您可以打开它并使用WinDbg进行调查。我强烈推荐Tess Fernandez和book的博客。