MFC应用程序异常处理奇怪的行为

时间:2014-01-07 12:03:20

标签: exception mfc crash report try-catch

我有一个64位MFC应用程序,我在其中使用崩溃报告。该方法基于这篇文章: http://www.codeproject.com/KB/debug/XCrashReportPt1.aspx?display=Print 所以我在AfxWinMain周围有一个__try - __except包装框。 去年它似乎运行良好(我的意思是在不同的操作系统上,也有32位和64位应用程序)。 让我们从这个例外中提供代码部分:

    void CMyDig::Foo()
    {
        std::vector<int> v;
        int i = v.at(42);
    }

当我在对话框的消息处理程序中编写此代码时,例如一个名为Foo的按钮的clickhandler,然后AfxWinMain中没有捕获异常。 如果我将相同的内容写入全局函数,它会将异常传递给AfxWinMain。 现在我们有这个奇怪的问题: 在某些计算机上,对话框的情况也会生成崩溃报告(在afxwinmain中输入__except块),但其他计算机没有。我设法在win7 64位上创建崩溃报告,但win8,win8.1和另一个win7 64bit上的相同程序没有报告! 我用vs2010编译,在代码生成选项中,“启用c ++异常”设置为EHsc(去年,当它运行良好时)。

感谢您的任何想法! 阿提拉

1 个答案:

答案 0 :(得分:0)

定义SetUnhandledExceptionFilter来创建崩溃报告会更容易。

在这种情况下,您不需要这样的__try / __except块

WndProcs有自己的__try __except块,有些例外由它们自己处理。 但无论如何。我从未遇到过异常过滤器的问题。 我的例程通常会创建一个崩溃转储(minidump)并终止。我一直认为,这些信息绝不足以让我们的技术人员找到问题。