我做了一個抽樣檢查時,在Windows控制檯應用程序按下Ctrl + C鍵發生什麼:爲什麼越來越第一蔡斯例外,在C++中
bool TerminationFlag=true;
int main()
{
g_hTerminateEvent = ::CreateEvent(NULL, FALSE, FALSE, NULL);
::SetConsoleCtrlHandler(ConsoleCtrlHandler, TRUE);
while(1)
{
if(TerminationFlag == false)
{
break;
}
}
return 0;
}
BOOL WINAPI ConsoleCtrlHandler(DWORD dwCtrlType)
{
if (dwCtrlType == CTRL_C_EVENT ||
dwCtrlType == CTRL_BREAK_EVENT ||
dwCtrlType == CTRL_CLOSE_EVENT)
{
TerminationFlag=false;
::SetEvent(g_hTerminateEvent);
return TRUE;
}
return FALSE;
}
我通過啓動視覺 調試選項運行它測試的代碼工作室當我按Ctrl + C我得到以下信息在0x7c87647d
時
第一次機會異常我按繼續選項我的代碼來到線
TerminationFlag=false;
,即使我已經處理控制處理程序中的Ctrl + C。你能告訴我最新的問題嗎?
當第一次機會異常發生時,查看異常記錄以查看引發了什麼以及爲什麼。 –
@RaymondChen如何看待異常記錄先生? – Dany
異常記錄是傳遞給異常處理程序的'EXCEPTION_POINTERS'的一部分。一些調試器有一個特殊的命令來顯示當前的異常記錄。 (例如,windbg使用'.ecxr'。) –