我有一个处理异常很好的进程。它调用:Win32/C++的关闭异常处理
_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调用其中的全局被清理)。
现在我有点卡住,虽然,因为我不能得到诊断转储和调用堆栈,看看到底是怎么回事。所以....
为什么ISN” t异常是通过上述处理程序发送的,而不是向用户显示?
有什么方法可以隐藏该对话框(因为此时没有损害)?
有没有一种方法来追踪根错误?
感谢您的任何想法。
这正是我所追求的:) – DougN 2009-11-27 14:04:18
这实际上工作吗?他上面描述的对话框听起来像是一个CRT对话框,但您正在使用Win32 API调用 – 2009-11-28 02:13:38