繁体   English   中英

C ++故障转储,在Win32异常上展开堆栈(使用catch(…)时)-VS 2003

[英]C++ crash dump, stack unwinding on Win32 exceptions (when catch(…) used) - VS 2003

像在即时调试中一样,VS 2003编译的应用程序是否在捕获(...)中捕获Win32(或异步)异常并展开堆栈? 在写入转储文件之前...

否,调试器调用是在代码中创建的,该代码从异常向上运行堆栈,因此堆栈尚未展开。 对于同步(C ++)和异步(OS)异常都是如此。

请参见著名的MSJ文章“关于Win32™结构化异常处理的深度的崩溃课程”中图13

未处理的异常过滤器异常过滤器列表的第一遍后调用,如果没有过滤坦言,愿意来处理异常。 此第一遍在展开之前,第二遍发生。 如果你有机会,你会发现你的异常的地方下来的筹码时中断到调试,这使得完美的意义:它将没有价值给小调试堆栈就已经解开,你根本不知道什么地方错误。

这取决于在编译应用程序时选择的堆栈展开语义。可以指示编译器捕获或不捕获代码的SEH异常。 启动代码始终捕获C ++和SEH异常,如果捕获到任何异常,它将终止应用程序。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM