Exception MFC应用程序异常处理异常行为
我有一个64位MFC应用程序,在其中我使用崩溃报告。该方法基于本文: 所以我在Exception MFC应用程序异常处理异常行为,exception,mfc,crash,report,try-catch,Exception,Mfc,Crash,Report,Try Catch,我有一个64位MFC应用程序,在其中我使用崩溃报告。该方法基于本文: 所以我在AfxWinMain周围有一个uuu try-uu,除了包装器框架。 去年,它似乎工作得很好(我的意思是在不同的操作系统上,以及在32位和64位应用程序上)。 让我们以提供代码部分为例: void CMyDig::Foo() { std::vector<int> v; int i = v.at(42); } void CMyDig::Foo() {
AfxWinMain
周围有一个uuu try-uu,除了包装器框架。
去年,它似乎工作得很好(我的意思是在不同的操作系统上,以及在32位和64位应用程序上)。
让我们以提供代码部分为例:
void CMyDig::Foo()
{
std::vector<int> v;
int i = v.at(42);
}
void CMyDig::Foo()
{
std::向量v;
int i=v.at(42);
}
当我在对话框的消息处理程序(例如一个名为Foo的按钮的clickhandler)中编写此代码时,AfxWinMain
中不会捕获异常。
如果我将其写入全局函数,它会将异常传递给AfxWinMain
。
现在我们有一个奇怪的问题:
在某些计算机上,对话框的情况也会生成崩溃报告(在afxwinmain中输入_除外块),但其他计算机则不会。我设法在win7 64位上创建了一个崩溃报告,但在win8、win8.1和另一个win7 64位上的相同程序不会生成报告!
我用VS2010编译,在代码生成选项中,“启用C++异常”被设置为EHsc(如去年,当它工作正常)。
谢谢你的建议!
阿提拉(Attila)仅仅定义以创建碰撞报告并不容易 在这种情况下,除了块之外,您不需要这样的_try/__ WNDPROC有自己的uuuu尝试uuuu,除了块之外,并且一些异常由它们自己处理。 但无论如何。我从来没有遇到过异常过滤器的问题。
我的例程通常创建一个崩溃转储(minidump)并终止。我一直觉得这些简单的信息永远不足以让我们的技术人员发现问题。谢谢!你指出了正确的方法,这似乎对我有用!我也使用了这个指南: