在Vista上,我遇到了应用程序崩溃处理程序的问题。基本上,如果出现SEH无法捕获的意外情况,我会在弹出窗口中显示“应用程序停止工作”,blablabla,“关闭程序/调试程序” - 也就是说,在我禁用错误报告后使用系统控制面板。启用错误报告后,您将获得一个任务对话框,可以在线搜索解决方案,关闭,调试。
如果它发生在自动化工具中,这不是那么有趣,我想知道是否有办法摆脱它完全,读取,如果我的应用程序崩溃,它只是崩溃到命令排队或消失,但没有提出对话。
答案 0 :(得分:6)
使用
SetErrorMode(SetErrorMode(0)|SEM_NOGPFAULTERRORBOX);
但我建议安装一个异常处理程序来创建转储,以便您可以验证发生了什么。例如crashrpt(或here)。
另见
答案 1 :(得分:0)
函数signal适用于所有POSIX平台:
signal(SIGSEGV, &signal_handler);
如果您需要捕获信号不支持的异常,您还可以查看AddVectoredExceptionHandler,这是W32特有的功能。