崩溃生成转储

时间:2011-05-20 14:07:29

标签: c++ crash windbg

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

3 个答案:

答案 0 :(得分:1)

由于您想使用ADPlus,我假设只有Windows解决方案才会这样做 在这种情况下,您可以安装post mortem调试器。一旦您的应用程序崩溃,它就会弹出。我经常使用windbg。

答案 1 :(得分:1)

您可能需要查看SetUnhandledExceptionFilter功能。

答案 2 :(得分:0)

IMO您不必在进程启动时附加到调试器。当进程终止并且位置设置为AeDebug RegistryKey

时,Windows将查找调试器

在x86计算机上,它是\\HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\AeDebug

CDB可以设置为Postmortem调试器

  

将事后调试器更改为   CDB,运行cdb -iae或cdb -iaec   KeyString中。当-iaec参数是   used,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获取完整的内存转储