Ereignisse
Die Debugger-Engine bietet Funktionen zum Überwachen und Reagieren auf Ereignisse im Ziel. Wenn ein Ereignis auftritt, hält die Engine das Ziel an (oft nur kurz), und benachrichtigt dann alle Clients des Ereignisses, die wiederum die Engine anweist, wie die Ausführung im Ziel ablaufen soll.
Um einen Client über ein Ereignis zu benachrichtigen, ruft das Modul das Ereignisrückrufobjekt auf, das beim Client registriert ist. Die Engine stellt jeden Ereignisrückruf mit Details zum Ereignis bereit, und der Ereignisrückruf weist die Engine an, wie die Ausführung im Ziel ablaufen soll. Wenn verschiedene Ereignisrückrufe widersprüchliche Anweisungen bereitstellen, wirkt das Modul auf die Anweisung mit der höchsten Rangfolge (siehe DEBUG_STATUS_XXX), was in der Regel bedeutet, dass die Anweisung ausgewählt wird, die die geringste Ausführung des Ziels beinhaltet.
Hinweis Während der Ereignisrückruf das Ereignis verarbeitet, wird das Ziel angehalten, und auf die Debugsitzung kann zugegriffen werden. Da die Engine jedoch auf ein Ereignis gewartet hat – entweder explizit während eines WaitForEvent-Aufrufs oder implizit durch Ausführen eines Befehls wie g (Go) oder p (Step) – kann der Ereignisrückruf WaitForEvent nicht aufrufen, und wenn versucht wird, Befehle auszuführen, die die Ausführung des Debuggers verursachen würden, z. B. g (Go) oder p (Step), interpretiert das Modul diese Befehle als Anweisung zum Fortfahren.
Ereignisfilter
Die Debugger-Engine bietet auch Ereignisfilter, die eine einfachere Alternative für die grundlegende Ereignisüberwachung darstellen. Die Ereignisfilter bieten einige einfache Regeln, die angeben, ob ein Ereignis im Ausgabestream des Debuggers gedruckt oder in den Debugger unterteilt werden soll. Sie können auch verwendet werden, um Debuggerbefehle auszuführen, wenn ein Ereignis auftritt.
Weitere Informationen
Ausführliche Informationen zur Überwachung von Ereignissen finden Sie unter Überwachen von Ereignissen.