2011-05-20 98 views
2

运行3-4天后,我的应用程序偶尔会在客户机器上崩溃。当应用程序启动时,是否可以将应用程序自动附加到像ADplus这样的调试器?这用于在应用程序崩溃时生成转储文件。崩溃生成转储

+1

相关:http://stackoverflow.com/questions/5224154/application-crash-with-no-解释/ 5224518#5224518 – 2011-05-20 14:14:30

回答

1

既然您想使用ADPlus,我假设一个仅Windows的解决方案将做到这一点。
在这种情况下,您可以安装事后调试器。只要你的应用程序崩溃,它就会弹出。我通常使用windbg。

0

IMO在进程启动时不必附加到调试器。的Windows会寻找一个调试进程终止时和设置的AeDebug的RegistryKey

在x86计算机的位置是\\HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\AeDebug

CDB可以设置为事后调试

要改变事后调试器运行cdb -iae或cdb -iaec KeyString。当使用-iaec参数 时,KeyString指定一个字符串 被附加到命令行 的末尾,用于启动事后调查器 调试器。如果KeyString包含 空格,则必须用引号括起 。如果 成功,则此命令将显示无消息,但如果 失败,则 将显示失败消息。当CDB是事后调查器 调试器时,每当应用程序崩溃时它将被激活 。

我会得到类似cdb -iaec ".dump /ma /u crashedapp.dmp;q"的东西,以便在进程终止时获得内存转储。

如果操作系统是Vista的SP1 +则注册表可以配置为使用获得WER http://msdn.microsoft.com/en-us/library/bb787181(VS.85).aspx完全内存转储