gpt4 book ai didi

debugging - Win32/C++ 的关闭异常处理

转载 作者:行者123 更新时间:2023-12-02 21:54:06 25 4
gpt4 key购买 nike

我有一个可以很好地处理异常的流程。它调用:

_set_se_translator(exception_trans_func); 
SetUnhandledExceptionFilter(UnhandledExceptionFilterHandler);
_set_purecall_handler(purecallHandler);
set_terminate(terminateHandler);
set_unexpected(unexpectedHandler);
_set_invalid_parameter_handler(InvalidParameterHandler);
atexit(exitHandler); //ignored during an expected exit
_onexit(onexitHandler); //ignored during an expected exit

每当发生异常时,就会调用其中一个处理程序,为我创建故障转储。生活是美好的。

除了一个客户站点。当他们关闭进程时,由于某种原因未通过这些调用路由异常,并且他们收到错误:

“0x101ba9df”处的指令引用了“0x00000004”处的内存。内存无法被“读取”。单击“确定”终止...”

x000000004 的内存引用看起来可能是一个空指针。查看该地址似乎是一个全局STL对象的析构函数(可能在CRT的initterm调用中,全局变量被清理)。

现在我有点陷入困境,因为我无法获得诊断转储和调用堆栈并确切地了解发生了什么。所以....

为什么异常不通过上述处理程序路由,而是显示给用户?

有什么方法可以隐藏该对话框(因为此时没有造成任何损害)?

有没有办法追踪根本错误?

感谢您的任何想法。

最佳答案

他们运行什么操作系统?

我假设您正在使用类似的方法设置错误模式

::SetErrorMode(SEM_FAILCRITICALERRORS | SEM_NOGPFAULTERRORBOX | SEM_NOOPENFILEERRORBOX);

确保 Windows 不会进行自己的错误处理?

关于debugging - Win32/C++ 的关闭异常处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1798262/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com