【问题标题】:Disable crash dialog box in C在 C 中禁用崩溃对话框
【发布时间】:2011-09-17 12:06:24
【问题描述】:

我想禁用(在 VS2010 C 程序中)发生 GPF 时屏幕上弹出的崩溃对话框窗口(你知道 xxx.exe 停止工作

我在win2008和win7上试过:

 - SetErrorMode(SetErrorMode(SEM_NOGPFAULTERRORBOX)|SEM_FAILCRITICALERRORS);
 - try/catch (with SEH, but some parts of the code aren't wrapped in)
 - SetUnhandledExceptionFilter()

没有任何效果......仍然有这个该死的窗口

我是不是忘记了什么?

唯一有效的是修改注册库中的“DontShowUI”键 (HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\Windows 错误报告) 但它只是不干净,我更喜欢“编码”解决方案(而且我不能将寄存器更改为我的代码!)

你有什么想法吗? (当然除了修复程序本身以避免 GPF :)

谢谢...

注意:有趣的是,在 Cygwin 下不会出现崩溃对话框!

【问题讨论】:

标签: c windows visual-studio visual-studio-2010 cygwin


【解决方案1】:

禁用崩溃框的最佳方法是删除导致程序崩溃的所有代码。对于正确的程序,此框永远不会出现。

编辑:至于您对SetErrorMode 的调用实际上有什么问题,应该是:

SetErrorMode(SetErrorMode(SEM_NOGPFAULTERRORBOX)
    |SEM_FAILCRITICALERRORS|SEM_NOGPFAULTERRORBOX);

或类似的。我认为您误读了您在 cmets 中引用的博客文章。

【讨论】:

  • 崩溃仍然很有可能(尽管不一定)是由于您违反了该库接口的合同...
  • 因为你误用了SetErrorMode,所以我不太确定你对 DLL 的使用...
猜你喜欢
  • 2013-05-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-17
相关资源
最近更新 更多