Events occurring in a target or the debugger engine may be monitored using the IDebugEventCallbacks interface. An IDebugEventCallbacks object may be registered with a client using SetEventCallbacks. Each client can only have at most one IDebugEventCallbacks object registered with it.
When an IDebugEventCallbacks object is registered with a client, the engine will call the object's IDebugEventCallbacks::GetInterestMask to determine which events the object is interested in. Only events in which the object is interested will be sent to it.
For each type of event, the engine calls a corresponding callback method on IDebugEventCallbacks. For events from the target, the DEBUG_STATUS_XXX value returned from these calls specifies how the execution of the target should proceed. The engine collects these return values from each IDebugEventCallbacks object it calls and acts on the one with the highest precedence.
Events from the Target That Break into the Debugger by Default
The following events break into the debugger by default:
Exception Events (not documented here)
Events from the Target that Do Not Break into the Debugger by Default
The following events do not break into the debugger by default:
Create Process Event
Exit Process Event
Create Thread Event
Exit Thread Event
Load Module Event
Unload Module Event
Internal Engine Changes
The following are not actual events, but are merely internal engine changes:
Engine Symbol Change
Session Status Change