ilk Chace özel durum alma: Görsel hata ayıklama seçeneğini başlatmak kullanarak çalıştırarak kod testBen Ctrl + C pencereler konsol uygulamasında basıldığında ne olur kontrol etmek için bir örnek yapılan niçin 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;
}
Ben ctrl + c bastığınızda stüdyo aşağıdaki mesaj 0x7c87647d
de
Birinci şans istisna olsun Devam et seçeneğine bastığımda, kontrol işleyicisinde Ctrl + C'yi kullanmamıza rağmen kodum
TerminationFlag=false;
hattına gelir. Lütfen bana sorunun ne olduğunu söyler misin?
İlk şans istisnası oluştuğunda, nelerin yükseltildiğini ve neden olduğunu görmek için istisna kaydına bakın. –
@RaymondChen İstisna kayıtlarına nasıl bakılır? – Dany
Özel durum kaydı, istisna işleyicisine iletilen EXCEPTION_POINTERS öğesinin parçasıdır. Bazı hata ayıklayıcıları, geçerli özel durum kaydını göstermek için özel bir komut içerir. (Örneğin, windbg '.ecxr' kullanır.) –