我的应用程序在运行3-4天后偶尔会在客户机上崩溃。是否可以在应用程序启动时自动将应用程序附加到像ADplus这样的调试器?这是为了在应用程序崩溃时生成转储文件。
发布于 2011-05-20 23:14:37
既然你想使用ADPlus,我假设一个只有windows的解决方案就可以了。
在这种情况下,您可以安装事后调试程序。一旦你的应用程序崩溃,它就会弹出。我通常使用windbg。
发布于 2011-05-20 23:19:58
您可能需要查看SetUnhandledExceptionFilter函数。
发布于 2011-05-21 03:13:02
在进程启动时,您不必附加到调试器。当进程终止并且位置为set AeDebug RegistryKey时,Windows将查找调试器
在x86计算机上,它是\\HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\AeDebug
可以将CDB设置为事后调试器
若要将事后调试器更改为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配置注册表以获得完整的内存转储
https://stackoverflow.com/questions/6073135
复制相似问题