2010-08-12 220 views
1

我试图写一个代码来处理异常,但是覆盖另一个异常处理程序,这有可能吗?异常处理

我在asm开发一个.exe调试.dll,并检测一些例外被提出(访问冲突),但.dll都有自己的异常处理,所以正常的SEH不应该工作。

我想知道是否有任何种类的全局异常处理程序可以覆盖这些现有的异常处理程序?

回答

2

看看Vectored Exception Handling(向量异常处理(http://msdn.microsoft.com/en-us/library/ms681420.aspx))。该页面指出“应用程序可以注册一个函数来监视或处理应用程序的所有异常。向量处理程序不是基于框架的,因此,您可以添加处理程序无论你在呼叫帧中的什么位置,都会调用向量处理程序,在调试器获得第一次机会通知之后,但在系统开始解除堆栈之前,会按顺序调用向量处理程序。“

+0

哦,谢谢,它似乎对我很好,但我也想问,你能给我一些关于这种处理的额外信息吗?我的意思是,我想要的信息就像发生问题的地址,这种例外,如果这是一个访问冲突,它试图写/读 – user506998 2010-08-12 21:29:21

+0

有关异常的信息将传递给您的异常处理函数。 http://msdn.microsoft.com/en-us/library/ms681419.aspx解释异常处理程序及其参数。在http://msdn.microsoft.com/en-us/library/aa363082.aspx上,您可以找到有关异常记录的说明,该记录是异常处理程序的异常指针参数的一部分。它包括异常代码和发生异常的地址。 http://msdn.microsoft.com/en-us/library/cc301714.aspx给出了一些引擎盖下的解释。 – Patrick 2010-08-13 09:44:36

+0

您可以使用SetUnhandledExceptionFilter()API,但您的处理程序将在所有其他处理程序之后调用。 – ruslik 2010-08-17 23:06:33