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