可以禁用"应用程序错误"对话框吗?

mch*_*mch 13 c++ memory windows debugging build-automation

我使用Hudson作为持续集成服务器来测试C/C++代码.不幸的是,我有一个导致内存损坏的错误,所以在某些Windows机器上,我有时会得到一个"应用程序错误"对话框,说明一条指令引用了无法读取的内存.弹出此对话框并基本挂起测试运行,因为它需要手动干预.

有没有办法阻止此对话框出现,以便测试运行只是失败并在Hudson中报告?

是否可以自动生成小型转储而不是显示对话框?

rkb*_*rkb 11

  1. 正如Gently先生所建议的,使用"禁用错误报告".另请参阅此PC World文章.
  2. 如果您的构建计算机上碰巧有MS Visual Studio,它将捕获应用程序错误并弹出一个对话框.要禁用这些对话框(以及Visual Studio的即时调试功能),请运行命令drwtsn32.exe -i将Dr. Watson设置为默认系统调试程序.沃森博士将产生一个核心转储并默默地退出.(请参阅此Microsoft知识库文章:http://support.microsoft.com/kb/q121434/.)


Ric*_*den 8

您也可以使用SetErrorMode执行此类programaticaly .有关详细信息,请参阅文章.

如何使用它的一个简单示例是执行以下操作:

SetErrorMode(GetErrorMode () | SEM_NOGPFAULTERRORBOX);
Run Code Online (Sandbox Code Playgroud)

上面的'或'是当前模式与我们想要的添加.