我的应用程序在运行3-4天后偶尔会在客户机器上崩溃。是否可以在应用程序启动时自动将应用程序附加到ADplus之类的调试器?这用于在应用程序崩溃时生成转储文件。
答案 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获取完整的内存转储