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

我正在Visual Studio 2010上开发C ++中的软件。由于这个软件应该在没有人工交互的服务器上运行,所以我确实需要摆脱这个“program.exe已经停止工作”窗口在发布错误的情况下popup。 我只是想要程序终止(也许也给出了一个错误信息,但不一定),并没有阻止等待某人点击“closures程序”button。 我不得不提,我的机器上有64位Windows 7专业版。

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

  • _set_abort_behaviorfunction。 这解决了调用abort()时的情况,但对于“vector下标超出范围”等错误则不是这种情况。

  • 我知道我可以通过做exception处理来解决这些错误,但并不是所有的错误都是exception,因此这并不能解决我的整个问题。

  • 我也读了一些关于Dr.Watsondebugging器的内容,这个debugging器应该是静静地终止应用程序,但是我觉得这个debugging器不适用于Windows 7.另外我不知道这个debugging器是否可以解决我的问题在发布模式…

  • 我没有发现,禁用我的整个机器上的错误报告是一个优雅的select,虽然我读了这也可以是一个替代品(不是我想要的)。

我怎样才能在Visual Studio中做到这一点? 有什么设置我可以使用?

有没有办法在Visual Studio中打开exception中的所有错误,以便我可以用exception处理机制解决问题? (如果这是一个愚蠢的问题,请容忍)

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

最好的问候,科妮莉亚

您可以使用

SetErrorMode(SEM_FAILCRITICALERRORS | SEM_NOGPFAULTERRORBOX); 

SetErrorMode的MSDN文档

你也可以参考这里

希望这会解决你的问题…

一个好办法是添加你自己的未处理的异常过滤器(参见SetUnhandledExceptionFilter() docs),然后写一个日志和一个小转储,以便你可以做任何你需要的错误处理(例如关闭设备/句柄),而且你也有崩溃转储,您可以稍后分析。 有用的信息在这个答案: https : //stackoverflow.com/a/1547251/188414

有时出现这种错误的原因仅仅是因为您在scanf使用的值之前未添加&符号

尝试以下解决了我的问题

 scanf("%d",code); 

 scanf("%d",&code);