Under the hood: 从Win32 SEH到CLI异常处理模型
推荐五篇关于Exception Handling的经典好文,另附一个关于其大致发展历程的Roadmap。以前只是粗略地了解过异常处理的实现机制,这两天又细细看了一遍,越来越觉得值得回味,从中依稀看到不少SSCLI中频繁用到的Stackwalking、托管线程逻辑堆栈复用、编译时动态监视点插入等思想的影子,其实思路都是连贯的、相通的,无非所处的发展阶段不一样。如果你跟我一样曾经对Rotor 2中的EE实现部分感到过惊讶,那么不妨先看看下面几篇文章,试着由浅入深地了解了解EH的来龙去脉及其演变过程,怎么说都是件有趣的事情:)
[1] Win32 SEH:最基础的异常处理机制
[2] VC6中带编译器支持的结构化异常处理机制
[3] VS2005中带缓冲区溢出检测和编译器支持的异常处理机制
[4] C++中面向对象的异常处理机制及其编译器支持
[5] CLI中的堆栈结构、及其异常处理模型
文献链接:
a. A Crash Course on the Depths of Win32™ Structured Exception Handling. Matt Pietrek. MSJ, Jan. 1997
b. How a C++ compiler implements exception handling. Vishal Kochhar. The Code Project, Apr. 2002
c. C++编译器如何实现异常处理(上文的翻译). 译者:局部变量. VC知识库
d. Reversing Microsoft Visual C++ Part I: Exception Handling. igorsk. OpenRCE.org, Mar. 2006
e. The CLI Exception Model. cbrumme's WebLog, Oct. 2003