Freigeben über


Client-Objekte

Fast die gesamte Interaktion mit der Debugger-Engine erfolgt über Client-Objekte, die oft einfach als Client bezeichnet werden. Jeder Client bietet eine Implementierung der Top-Level-Schnittstellen der Engine. Jede Schnittstelle bietet einen anderen Satz von Methoden, die zur Interaktion mit der Engine und – über die Engine – mit den Zielen verwendet werden können. Eine Instanz der Engine kann viele Clients haben, jeder mit seinem eigenen Status.

Primäre Clients

Ein primärer Client ist ein Client, der der aktuellen Debugging-Sitzung beigetreten ist. Wenn ein neues Client-Objekt erstellt wird, handelt es sich zunächst nicht um einen primären Client. Ein Client wird zu einem primären Client, wenn er zum Erfassen eines Ziels verwendet wird (z. B. durch den Aufruf von CreateProcess2) oder mit ConnectSession mit der Debugging-Sitzung verbunden wird. Der Debugger-Befehl .clients listet nur die primären Clients auf.

Callback-Objekte

Callback-Objekte können bei jedem Client registriert werden. Es gibt drei Arten von Callback-Objekten:

  1. Eingabe-Callback-Objekte (oder Eingabe-Callbacks): Die Engine ruft Eingabe-Callbacks auf, um Eingaben anzufordern. Ein Debugger mit einem Konsolenfenster könnte beispielsweise einen Eingabe-Callback registrieren, um die Engine mit Eingaben der Benutzenden zu versorgen, oder ein Debugger könnte einen Eingabe-Callback registrieren, um die Engine mit Eingaben aus einer Datei zu versorgen.

  2. Ausgabe-Callback-Objekte (oder Ausgabe-Callbacks): die Engine ruft Ausgabe-Callbacks auf, um Ausgaben anzuzeigen. Zum Beispiel könnte ein Debugger mit einem Konsolenfenster einen Ausgabe-Callback registrieren, um die Ausgabe des Debuggers den Benutzenden zu präsentieren, oder ein Debugger könnte einen Ausgabe-Callback registrieren, um die Ausgabe an eine Log-Datei zu senden.

  3. Ereignis-Callback-Objekte (oder Ereignis-Callbacks): Die Engine ruft Ereignis-Callbacks auf, wenn in einem Ziel ein Ereignis eintritt (oder sich der Status der Engine ändert). Zum Beispiel könnte eine Debugger-Erweiterungsbibliothek einen Ereignis-Callback registrieren, um bestimmte Ereignisse zu überwachen oder automatische Aktionen durchzuführen, wenn ein bestimmtes Ereignis eintritt.

Remote-Debugging

Client-Objekte erleichtern die Kommunikation mit Remote-Instanzen der Host Engine. Die Funktion DebugConnect erstellt ein Client-Objekt, das mit einer Remote-Engine-Instanz verbunden ist. Methoden, die auf diesem Client aufgerufen werden, werden von der Remote-Engine ausgeführt und Callback-Objekte, die lokal beim Client registriert sind, werden aufgerufen, wenn die Remote-Engine Callback-Aufrufe tätigt.

Zusätzliche Informationen

Einzelheiten zum Erstellen und Verwenden von Client-Objekten finden Sie unter Verwenden von Callback-Objekten. Einzelheiten über die Registrierung von Callback-Objekten finden Sie unter Verwendung von Callback-Objekten.