我正在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);