如何避免在窗口上以释放模式"program.exe has stopped working"窗口?
How to avoid "program.exe has stopped working" window in release mode on windows?
我正在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);
- gdborig.exe 在调试 QT 5.8 并在窗口中打开 QFileDialog 时随机崩溃
- 在另一个C 程序的窗口中打开.exe
- 如何从.exe查找名称窗口
- 尝试使用窗口注册表中的路径和 DeleteFile() 方法删除.exe文件
- CreateProcess正在调用cmd.exe,包括没有显示(闪烁)窗口的参数
- 如何从exe文件的名称中查找窗口句柄
- 将程序(.EXE)作为线程 - 窗口C 执行
- .EXE窗口中的鼠标模拟
- 如何用API窗口拆卸EXE文件
- 如何避免在窗口上以释放模式"program.exe has stopped working"窗口?
- C++在杀死LogonUI.exe后将窗口置于前台
- Firefox 扩展中的无窗口嵌入式 exe
- 我的C++程序收到" ... .exe has stopped working"窗口 7 错误
- 如何在(64位)窗口上编译c++以生成64位exe
- 在没有ms-dos窗口的情况下运行exe
- 在子窗口(C++,win32)中执行外部exe
- 如何在没有IO窗口(命令行窗口)的情况下运行exe
- 创建样本在哪里.exe?- OpenCV窗口
- 是终止 chrome.exe 在窗口上的更好方法
- .exe窗口退出后