Monitoraggio degli eventi

Per una panoramica degli eventi nel motore del debugger, vedere Eventi.

Gli eventi che si verificano in una destinazione o nel motore di debugger possono essere monitorati usando l'interfaccia IDebugEventCallbacks . Un oggetto IDebugEventCallbacks può essere registrato con un client usando SetEventCallbacks. Ogni client può avere solo un oggetto IDebugEventCallbacks registrato con esso.

Quando un oggetto IDebugEventCallbacks viene registrato con un client, il motore chiamerà l'IDebugEventCallbacks::GetInterestMask per determinare quali eventi l'oggetto è interessato. Verranno inviati solo gli eventi in cui l'oggetto è interessato.

Per ogni tipo di evento, il motore chiama un metodo di callback corrispondente in IDebugEventCallbacks. Per gli eventi della destinazione, il valore DEBUG_STATUS_XXX restituito da queste chiamate specifica il modo in cui l'esecuzione della destinazione deve continuare. Il motore raccoglie questi valori restituiti da ogni oggetto IDebugEventCallbacks che chiama e agisce su quello con la precedenza più alta.

Eventi dalla destinazione che si interrompono nel debugger per impostazione predefinita

Per impostazione predefinita, gli eventi seguenti si interrompono nel debugger:

  • Eventi del punto di interruzione

  • Eventi di eccezione (non documentati qui)

  • Errore di sistema

Eventi dalla destinazione che non si interrompono nel debugger per impostazione predefinita

Per impostazione predefinita, gli eventi seguenti non si interrompono nel debugger:

  • Creare l'evento Processo

  • Evento Exit Process

  • Creare l'evento Thread

  • Esci dall'evento thread

  • Evento Load Module

  • Scarica evento modulo

Modifiche del motore interno

I seguenti non sono eventi effettivi, ma sono semplicemente modifiche del motore interno:

  • Modifica di destinazione

  • Modifica motore

  • Modifica del simbolo del motore

  • Modifica dello stato della sessione