First-chance exception in KERNEL32.DLL 0xE06D7363 Microsoft C++ Exception
2009-05-04 16:21

在VC中调试程序时,Output窗口有时会出现“First-chance exception in xxx.exe...”这样的信息。一般来说,这是由于程序中发生了异常,被VC捕获而产生的输出。

在调试器中运行程序时,如果程序产生异常,调试器会首先获得通知(即First-chance exception),而后此异常由产生它的程序负责捕获。如果程序没有捕获此异常,那么调试器会再次被通知(即Second-chance exception,Last-chance exception),并结束程序。

通常见到的“First-chance exception”一般是“0xC0000005: Access Violation”,“0xC00000FD: Stack Overflow”等,这些都说明程序中有缺陷,需要修正。

但是也有一些属于正常的情况,例如“First-chance exception in xxx.exe (KERNEL32.DLL): 0xE06D7363: Microsoft C++ Exception”。Windows 操作系统中广泛使用了结构化异常(SEH)来处理特殊情况,许多和底层打交道的API都靠SEH来处理可能发生的意外。并且,这些API中都有捕获SEH 的代码,产生的异常不会对程序造成影响。但是由于上面提到的“First-chance exception,Second-chance exception”机制,VC仍然会有输出,但是我们完全可以忽略。如果你实在不喜欢这些输出信息,那你就必须禁用对特定异常的“First- chance exception”捕获。

First-chance exception in XX.exe(KERNEL32.DLL):0xE06D7363:Microsoft C++ Exception

    在VC中调试程序时,Output窗口有时会出现“First-chance exception in xxx.exe...”这样的信息。一般来说,这是由于程序中发生了异常,被VC捕获而产生的输出。有时在程序运行时并没出错,但是在调试时总是停到此处从而无法调试下面程序。

    有人说这是Visual自身Bug,需找好久才明白一点,并把我的解决办法分享一下。在此首先要感谢

http://hi.baidu.com/wytzsjzly/blog/item/8db27122f1bdbbac4723e8c1.html

http://topic.csdn.net/t/20060827/21/4979152.html中提到的方法。

    在调试器中运行程序时,如果程序产生异常,调试器会首先获得通知(即First-chance exception),而后此异常由产生它的程序负责捕获。如果程序没有捕获此异常,那么调试器会再次被通知(即Second-chance exception,Last-chance exception),并结束程序。

    通常见到的“First-chance exception”一般是“0xC0000005: Access Violation”,“0xC00000FD: Stack Overflow”等,这些都说明程序中有缺陷,需要修正。

    但是也有一些属于正常的情况,例如“First-chance exception in xxx.exe (KERNEL32.DLL): 0xE06D7363: Microsoft C++ Exception”。Windows 操作系统中广泛使用了结构化异常(SEH)来处理特殊情况,许多和底层打交道的API都靠SEH来处理可能发生的意外。并且,这些API中都有捕获SEH 的代码,产生的异常不会对程序造成影响。但是由于上面提到的“First-chance exception,Second-chance exception”机制,VC仍然会有输出,但是我们完全可以忽略。如果你实在不喜欢这些输出信息,那你就必须禁用对特定异常的“First- chance exception”捕获。

    其方法如下:

-Start   debugging   your   program.
-Go   to   Debug   |   Exceptions...
-Choose   "e06d7363   Microsoft   C++   Exception "   from   the   bottom   of   the   "Exceptions "   list.
-Choose   "Stop   always "
-Click   "Change "
-Click   "OK "

Now   your   debugger   will   stop   when   it   encounters   a   first-chance   C++   exception,   and   you   can   examine   the   call   stack,   etc,   and   investigate.   (You   may   need   to   restart   the   debugging   session,   if   the   exception   has   taken   place   before   you   get   this   setting   changed.)

    在number中选择:E06D7363 Name:Microsoft   C++   Exception ,在Action中选择“Stop alwaws”就会停到此处,选择“Stop if not handled”就不会停到此处了。

posted on 2011-04-19 11:07  kangwang1988  阅读(2166)  评论(0编辑  收藏  举报