First-chance exception in KERNEL32.DLL 0xE06D7363 Microsoft C++ Exception2009-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”就不會停到此處了。