C++ EH Exception(0xe06d7363)---捕获过程
书接上文《C++ EH Exception(0xe06d7363)----抛出过程》,下面我们讲下,VC++是如何catch到异常且处理的。
我们知道,在VC++里,C++异常实现的底层机制还是SEH,所以,我们将程序跑起来观察
上图红框框起来的部分就是编译器安装了异常处理链,且将其设置位最后一个节点,也就如下结构
struct VC_EXCEPTION_REGISTRATION { VC_EXCEPTION_REGISTRATION* prev; //前一个结构体的指针 FARPROC handler; //永远指向_exception_handler4回调函数 scopetable_entry* scopetable;//指向scpoetable数组的指针 int _index; //有的书上也叫tryLevel。scopetable项的当前项 DWORD _ebp; //当前ebp值,用于访问各成员 }
WinDbg常用命令系列---.effmach
.effmach (Effective Machine)
.effmach命令显示或更改调试器使用的处理器模式。