我的winform应用程序一启动就会崩溃。此问题仅发生在客户端计算机之一。适用于所有其他客户。我正在考虑使用ADPlus来获取崩溃转储,但问题是为了在崩溃模式下配置ADPlus,需要首先将调试器附加到正在运行的应用程序。这意味着当我配置ADPlus时应用程序必须正在运行,但是,正如我所说的,我的应用程序一启动就崩溃了。它没有给我机会运行ADPlus。是否可以在这种情况下使用ADPlus?在这种情况下,我可以使用其他任何工具生成进程转储吗?
答案 0 :(得分:2)
由于您无法启动程序,然后及时附加调试器,您可以尝试以下一种想法:
gflags
to make Windows start the program under the debugger.这将为您的程序文件名under the Image File Execution Options
registry key. 如果发生崩溃,调试器将自动进入并自动创建转储或让您手动创建转储。
如果你不能运行调试器,甚至不能运行ProcDump,你可以使用Windows的内置故障转储工具自动创建转储:
在Windows XP和Windows Server 2003上,运行此命令将Dr. Watson设置为事后调试程序:
drwtsn32 -i
以下是有关此命令的作用以及如何使用Dr. Watson的信息:Capturing Application Crash Dumps
在Windows Vista SP1,Windows Server 2008及更高版本上,通过创建此注册表项,将Windows错误报告设置为在本地保存转储:
HKLM\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps
您无需在此键下创建或设置任何值或子键。如果您想更改设置,可以参考以下信息:Collecting User-Mode Dumps
请注意,“WER不支持执行自定义崩溃报告的应用程序,包括.NET应用程序。这是一个问题,因为您的应用程序使用WinForms - 尽管有一些迹象表明该功能适用于Windows 7上的.NET 4应用程序。
答案 1 :(得分:0)
您可以使用Sysinternals中的ProcDump来捕获转储。