如何避免在窗口上以释放模式"program.exe has stopped working"窗口?



我正在Visual Studio 2010上用C++开发一个软件。由于该软件应该在无法进行人机交互的服务器上运行,我真的需要去掉发布版本中弹出的"program.exe已停止工作"窗口,以防出现错误。我只是希望程序终止(可能也会给出错误消息,但不一定),而不是一直被阻止,等待有人点击"关闭程序"按钮。我不得不提一下,我的电脑上有64位的Windows7专业版。

我读过一些东西,比如:

  • _set_abortBehavior函数。这解决了调用abort()时的情况,但对于"矢量下标超出范围"之类的错误,情况并非如此。

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

  • 我也读过一些关于Dr.Watson调试器的文章,它应该以静默的方式终止应用程序,但我觉得这个调试器不适用于Windows7。另外,我不知道这个调试器是否能在发布模式下解决我的问题。。。

  • 我不认为在我的整个机器上禁用错误报告是一个优雅的选择,尽管我读到这也可能是一个替代方案(不是我真正想要的)。

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

有没有一种方法可以在VisualStudio中将异常中的所有错误都转为异常,这样我就可以用异常处理机制来解决这个问题?(如果这是一个愚蠢的问题,请宽容)

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

谨致问候,角膜

您可以使用

SetErrorMode(SEM_FAILCRITICALERRORS | SEM_NOGPFAULTERRORBOX);

SetErrorMode 的MSDN文档

你也可以在这里参考

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

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

有时,只有在scanf 中使用的值之前没有添加&符号,才会出现此错误

尝试以下解决了我的问题

来自

scanf("%d",code);

scanf("%d",&code);

最新更新