如何在Windows上以释放模式避免“program.exe已停止工作”窗口?

时间:2012-07-19 11:01:19

标签: c++ windows visual-studio-2010

我正在使用Visual Studio 2010开发C ++软件。由于这个软件应该在人机交互不可用的服务器上运行,我真的需要摆脱这个“program.exe已经停止工作“在发布版本中弹出的窗口,以防出现错误。我只是希望程序终止(也许还会给出错误消息,但不一定)并且不会让它等待有人点击“关闭程序”按钮。我必须提到我的机器上有64位Windows 7专业版。

我已经阅读了几件事,例如:

  • _set_abort_behavior函数。这解决了调用abort()时的情况,但对于“矢量下标超出范围”之类的错误则不是这种情况。

  • 我知道我可以通过异常处理解决其中的一些错误,但并非所有错误都是例外,因此这不能解决我的整个问题。

  • 我还读过一些关于Dr. Watson调试器的内容,它应该默默地终止应用程序,但我觉得这个调试器不能用于Windows 7. Plus我不知道是否这个调试器可以解决我在发布模式下的问题......

  • 我没有发现在我的整个机器上禁用错误报告是一个优雅的选择,虽然我读到这也可能是一个替代方案(不是我想要的那个)。

    < / LI>

如何在Visual Studio中执行此操作?我可以使用任何设置吗?

是否有办法在Visual Studio中转换异常中的所有错误,以便我可以使用异常处理机制解决问题? (如果这是一个愚蠢的问题,请宽容)

我期待着您的建议。非常感谢你的时间!

祝你好运, Cornelia的

2 个答案:

答案 0 :(得分:19)

您可以使用

SetErrorMode(SEM_FAILCRITICALERRORS | SEM_NOGPFAULTERRORBOX);

MSDN documentation for SetErrorMode

您还可以refer here

希望这能解决你的问题...

答案 1 :(得分:1)

一个好方法是添加自己的未处理异常过滤器(请参阅SetUnhandledExceptionFilter() docs),然后编写日志和迷你转储,以便您可以执行所需的任何错误处理(例如关闭设备/句柄)并且您还有一个可以在以后分析的崩溃转储。本答案中有用的信息:https://stackoverflow.com/a/1547251/188414