我的 winform 应用程序一启动就崩溃了。此问题仅发生在其中一台客户端计算机中。适用于所有其他客户。我正在考虑使用 ADPlus 来获取故障转储,但问题是为了在崩溃模式下配置 ADPlus,需要首先将调试器附加到正在运行的应用程序。这意味着当我配置 ADPlus 时应用程序必须正在运行,但是,正如我所说,我的应用程序在我启动它时就会崩溃。它没有给我运行 ADPlus 的机会。知道 ADPlus 是否可以在这种情况下使用吗?在这种情况下,我可以使用任何其他工具生成进程转储吗?
问问题
5778 次
2 回答
2
由于无法启动程序然后及时附加调试器,可以尝试以下思路之一:
- 在崩溃的机器上的调试器下启动程序。如前所述, ProcDump 足以满足此目的,或者您可以使用 Visual Studio 或 WinDBG。
- 如果在调试器下不能轻松启动程序(例如,如果它实际上是Windows服务),使用
gflags
使Windows在调试器下启动程序。这将在注册表项下为您的程序文件名创建一个子项。Image File Execution Options
- 将您的调试器设置为事后调试器,因此它总是在任何程序崩溃时启动。
如果发生崩溃,调试器将自动进入并自动创建转储或让您手动创建转储。
如果您无法运行调试器,甚至 ProcDump,您可以使用 Windows 的内置故障转储工具自动创建转储:
在 Windows XP 和 Windows Server 2003 上,通过运行以下命令将 Dr. Watson 设置为事后调试器:
drwtsn32 -i
以下是有关此命令的作用以及如何使用 Dr. Watson 的信息:捕获应用程序故障转储
在 Windows Vista SP1、Windows Server 2008 及更高版本上,通过创建以下注册表项将 Windows 错误报告设置为在本地保存转储:
HKLM\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps
您无需在此键下创建或设置任何值或子键。如果您想更改设置,这里有更多信息:收集用户模式转储
请注意,“执行自己的自定义崩溃报告的应用程序,包括 .NET 应用程序,不受”WER 支持。这对您来说是个问题,因为您的应用程序使用 WinForms - 尽管有迹象表明该功能确实适用于 Windows 7 上的 .NET 4 应用程序。
于 2012-01-18T08:37:09.947 回答
0
您可以使用Sysinternals 的ProcDump来捕获转储。
于 2012-01-18T04:48:28.123 回答