我有一個處理異常很好的進程。它調用:Win32/C++的關閉異常處理
_set_se_translator(exception_trans_func);
SetUnhandledExceptionFilter(UnhandledExceptionFilterHandler);
_set_purecall_handler(purecallHandler);
set_terminate(terminateHandler);
set_unexpected(unexpectedHandler);
_set_invalid_parameter_handler(InvalidParameterHandler);
atexit(exitHandler); //ignored during an expected exit
_onexit(onexitHandler); //ignored during an expected exit
無論何時發生異常,其中一個處理程序被調用,它會爲我創建一個故障轉儲。生活很好。
除了在一個客戶現場。當他們關閉進程時,出於某種原因沒有通過這些調用路由的異常,他們得到錯誤:
「0x101ba9df」處的指令引用「0x00000004」處的內存。內存不能被「讀取」。單擊確定以終止......」
x000000004的內存引用看起來像它可能是一個空指針,而且看那個地址出現是一個全球性的STL對象的析構函數(可能在CRT的initterm調用其中的全局被清理)。
現在我有點卡住,雖然,因爲我不能得到診斷轉儲和調用堆棧,看看到底是怎麼回事。所以....
爲什麼ISN」 t異常是通過上述處理程序發送的,而不是向用戶顯示?
有什麼方法可以隱藏該對話框(因爲此時沒有損害)?
有沒有一種方法來追蹤根錯誤?
感謝您的任何想法。
這正是我所追求的:) – DougN 2009-11-27 14:04:18
這實際上工作嗎?他上面描述的對話框聽起來像是一個CRT對話框,但您正在使用Win32 API調用 – 2009-11-28 02:13:38