我使用Hudson作为持续集成服务器来testingC / C ++代码。 不幸的是,我有一个导致内存损坏的错误,所以在一些Windows机器上,我有时会得到一个“应用程序错误”对话框,解释一个指令引用了无法读取的内存。 这个对话框popup并基本挂起testing运行,因为它需要手动干预。
有没有办法来防止这个对话框出现,以便testing运行只是失败,并在哈德逊报告?
是否有可能自动生成一个小型转储,而不是显示对话框?
drwtsn32.exe -i
将Dr. Watson设置为默认的系统调试器。 沃森博士将生成一个核心转储并悄然退出。 (请参阅此Microsoft知识库文章: http : //support.microsoft.com/kb/q121434/ 。 你也可以使用SetErrorMode做类似这样的程序。 看到这篇文章的更多细节。
如何使用它的一个简单的例子是做到以下几点:
SetErrorMode(GetErrorMode () | SEM_NOGPFAULTERRORBOX);
上述“或”与我们所期望的添加的当前模式。
禁用错误报告
您可以使用各种_CrtSetReport函数来控制C / C ++运行时响应各种错误的方式(_CrtSetReportHook,_CrtSetReportMode,_CrtSetReportFile,_CrtSetReportHook2)
除了rkb所说的,如果你运行的是Windows XP 64bit,那么有两套值。 在通常的注册表位置和在HKLM
的Wow6432Node
键下的那些。 为了同时更新,从%SYSTEMROOT%\system32
和%SYSTEMROOT%\SysWOW64
运行drwtsn32.exe -i
。
使用try / catch语句来捕获异常并按照你想要的方式处理它。