【问题标题】:Exception handling异常处理
【发布时间】:2010-08-12 17:05:07
【问题描述】:

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

我在asm 中开发了一个.exe 来调试.dll,并检测一些引发的异常(访问冲突),但.dll 有自己的异常处理,所以正常的SEH 不应该工作.

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

【问题讨论】:

    标签: windows assembly exception-handling x86


    【解决方案1】:

    看看向量异常处理 (http://msdn.microsoft.com/en-us/library/ms681420.aspx)。该页面指出“应用程序可以注册一个函数来监视或处理应用程序的所有异常。向量处理程序不是基于帧的,因此,您可以添加一个无论您在调用框架中的哪个位置都将调用的处理程序。向量化处理程序按照它们被添加的顺序被调用,在调试器收到第一次机会通知之后,但在系统开始展开堆栈之前。"

    【讨论】:

    • 哦,谢谢,这对我来说似乎很有效,但我也想问一下,你能给我一些关于这个处理的额外信息吗?我的意思是,我想要诸如问题发生的地址、哪种异常以及是否是访问冲突等信息,它试图写入/读取的位置
    • 有关异常的信息将传递给您的异常处理函数。 msdn.microsoft.com/en-us/library/ms681419.aspx 解释了异常处理程序及其参数。在msdn.microsoft.com/en-us/library/aa363082.aspx 上,您可以找到有关异常记录的描述,该记录是异常处理程序的异常指针参数的一部分。它包括异常代码和发生异常的地址。 msdn.microsoft.com/en-us/library/cc301714.aspx 给出了一些幕后解释。
    • 您可以使用 SetUnhandledExceptionFilter() API,但您的处理程序将在所有其他处理程序之后调用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多