我正在使用Visual Studio 2010开发C ++软件。由于这个软件应该在人机交互不可用的服务器上运行,我真的需要摆脱这个“program.exe已经停止工作“在发布版本中弹出的窗口,以防出现错误。我只是希望程序终止(也许还会给出错误消息,但不一定)并且不会让它等待有人点击“关闭程序”按钮。我必须提到我的机器上有64位Windows 7专业版。
我已经阅读了几件事,例如:
_set_abort_behavior函数。这解决了调用abort()时的情况,但对于“矢量下标超出范围”之类的错误则不是这种情况。
我知道我可以通过异常处理解决其中的一些错误,但并非所有错误都是例外,因此这不能解决我的整个问题。
我还读过一些关于Dr. Watson调试器的内容,它应该默默地终止应用程序,但我觉得这个调试器不能用于Windows 7. Plus我不知道是否这个调试器可以解决我在发布模式下的问题......
我没有发现在我的整个机器上禁用错误报告是一个优雅的选择,虽然我读到这也可能是一个替代方案(不是我想要的那个)。
< / LI>如何在Visual Studio中执行此操作?我可以使用任何设置吗?
是否有办法在Visual Studio中转换异常中的所有错误,以便我可以使用异常处理机制解决问题? (如果这是一个愚蠢的问题,请宽容)
我期待着您的建议。非常感谢你的时间!
祝你好运, Cornelia的
答案 0 :(得分:19)
您可以使用
SetErrorMode(SEM_FAILCRITICALERRORS | SEM_NOGPFAULTERRORBOX);
MSDN documentation for SetErrorMode
您还可以refer here
希望这能解决你的问题...
答案 1 :(得分:1)
一个好方法是添加自己的未处理异常过滤器(请参阅SetUnhandledExceptionFilter() docs),然后编写日志和迷你转储,以便您可以执行所需的任何错误处理(例如关闭设备/句柄)并且您还有一个可以在以后分析的崩溃转储。本答案中有用的信息:https://stackoverflow.com/a/1547251/188414