13

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

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

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

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

  • 我还阅读了有关 Dr. Watson 调试器的一些信息,它应该以静默方式终止应用程序,但我的印象是这个调试器不适用于 Windows 7。另外我不知道这个调试器是否能解决我的问题在释放模式...

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

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

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

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

最好的问候,科妮莉亚

4

3 回答 3

19

您可以使用

SetErrorMode(SEM_FAILCRITICALERRORS | SEM_NOGPFAULTERRORBOX);

SetErrorMode 的 MSDN 文档

你也可以参考这里

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

于 2012-07-19T11:10:20.100 回答
1

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

于 2012-07-19T11:41:15.443 回答
-1

有时这个错误只是因为你没有&在你使用的值之前添加一个符号scanf

尝试以下解决我的问题

scanf("%d",code);

scanf("%d",&code);
于 2015-09-10T00:01:46.217 回答