我的winform应用程序一旦启动就会崩溃。 这个问题只发生在客户端电脑之一。 适用于所有其他客户。 我正在考虑使用ADPlus来获得崩溃转储,但问题是为了在崩溃模式下configurationADPlus,debugging器需要先连接到正在运行的应用程序。 这意味着当我configurationADPlus时,应用程序必须正在运行,但是,正如我所说的,我的应用程序一旦启动就会崩溃。 它没有给我一个运行ADPlus的机会。 任何想法,如果ADPlus可以在这种情况下使用? 在这种情况下是否还有其他可用的工具生成过程转储?
由于您无法启动程序并及时附加调试程序,因此您可以尝试以下方法之一:
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
您不需要在此项下创建或设置任何值或子项。 如果你想改变设置,这里是更多的信息: 收集用户模式转储
请注意,“WER不支持”自行定制崩溃报告的应用程序,包括.NET应用程序。 这对您来说是一个问题,因为您的应用程序使用WinForms – 尽管有一些迹象表明该功能在Windows 7上可以与.NET 4应用程序一起工作。
您可以使用Sysinternals的ProcDump来捕获转储。