Gestione delle eccezioni del debugger
La gestione del sistema delle eccezioni in modalità utente fornisce supporto per debugger sofisticati. Se viene eseguito il debug del processo in cui si verifica un'eccezione, il sistema genera un evento di debug. Se il debugger usa la funzione WaitForDebugEvent, l'evento di debug determina la restituzione di tale funzione con un puntatore a una struttura DEBUG_EVENT. Questa struttura contiene gli identificatori di processo e thread che il debugger può usare per accedere al record di contesto del thread. La struttura contiene anche una struttura EXCEPTION_DEBUG_INFO che include una copia del record di eccezione.
Quando il sistema cerca un gestore eccezioni, esegue due tentativi di notificare al debugger di un processo. Il primo tentativo di notifica offre al debugger l'opportunità di gestire le eccezioni a un punto di interruzione o a un singolo passaggio. Questa notifica è nota come notifica first-chance. L'utente può quindi eseguire comandi del debugger per modificare l'ambiente del processo prima che vengano eseguiti gestori eccezioni. Il secondo tentativo di notificare al debugger si verifica solo se il sistema non riesce a trovare un gestore eccezioni basato su frame che gestisce l'eccezione. Questa notifica è nota come notifica dell'ultima probabilità. Se il debugger non gestisce l'eccezione dopo l'ultima notifica di probabilità, il sistema termina il processo sottoposto a debug.
A ogni tentativo di notifica, il debugger usa la funzione ContinueDebugEvent per restituire il controllo al sistema. Prima di restituire il controllo, il debugger può gestire l'eccezione e modificare lo stato del thread in base alle esigenze oppure può scegliere di non gestire l'eccezione. Usando ContinueDebugEvent, il debugger può indicare che ha gestito l'eccezione, nel qual caso lo stato della macchina viene ripristinato e l'esecuzione del thread viene continuata nel punto in cui si è verificata l'eccezione. Il debugger può anche indicare che non ha gestito l'eccezione, che fa sì che il sistema continui la ricerca di un gestore eccezioni.