Clientobjekte

Fast die gesamte Interaktion mit der Debugger-Engine erfolgt über Clientobjekte, die oft einfach als Clients bezeichnet werden. Jeder Client stellt eine Implementierung der Engine-Schnittstellen der obersten Ebene bereit. Jede Schnittstelle bietet einen anderen Satz von Methoden, die für die Interaktion mit der Engine und über die Engine die Ziele verwendet werden können. Ein instance der Engine kann über viele Clients verfügen, die jeweils einen eigenen Zustand aufweisen.

Primäre Clients

Ein primärer Client ist ein Client, der der aktuellen Debugsitzung beigetreten ist. Wenn ein neues Clientobjekt erstellt wird, handelt es sich zunächst nicht um einen primären Client. Ein Client wird zu einem primären Client, wenn er zum Abrufen eines Ziels verwendet wird (z. B. durch Aufrufen von CreateProcess2) oder über ConnectSession mit der Debugsitzung verbunden ist. Der Debuggerbefehl .clients listet nur die primären Clients auf.

Rückrufobjekte

Rückrufobjekte können bei jedem Client registriert werden. Es gibt drei Arten von Rückrufobjekten:

  1. Eingaberückrufobjekte (oder Eingaberückrufe): Die Engine ruft Eingaberückrufe auf, um Eingaben anzufordern. Beispielsweise könnte ein Debugger mit einem Konsolenfenster einen Eingaberückruf registrieren, um der Engine Eingaben vom Benutzer bereitzustellen, oder ein Debugger registriert einen Eingaberückruf, um der Engine Eingaben aus einer Datei bereitzustellen.

  2. Ausgaberückrufobjekte (oder Ausgaberückrufe): Die Engine ruft Ausgaberückrufe auf, um die Ausgabe anzuzeigen. Beispielsweise kann ein Debugger mit einem Konsolenfenster einen Ausgaberückruf registrieren, um die Ausgabe des Debuggers für den Benutzer anzuzeigen, oder ein Debugger registriert einen Ausgaberückruf, um die Ausgabe an eine Protokolldatei zu senden.

  3. Ereignisrückrufobjekte (oder Ereignisrückrufe): Die Engine ruft Ereignisrückrufe auf, wenn ein Ereignis in einem Ziel auftritt (oder der Zustand der Engine geändert wird). Beispielsweise könnte eine Debuggererweiterungsbibliothek einen Ereignisrückruf registrieren, um bestimmte Ereignisse zu überwachen oder automatisierte Aktionen auszuführen, wenn ein bestimmtes Ereignis auftritt.

Remotedebuggen

Clientobjekte erleichtern die Kommunikation mit Remoteinstanzen der Host-Engine. Die DebugConnect-Funktion erstellt ein Clientobjekt, das mit einer Remote-Engine instance verbunden ist. Methoden, die auf diesem Client aufgerufen werden, werden von der Remote-Engine ausgeführt, und Rückrufobjekte, die lokal beim Client registriert sind, werden aufgerufen, wenn die Remote-Engine Rückrufaufrufe durchführt.

Zusätzliche Informationen

Ausführliche Informationen zum Erstellen und Verwenden von Clientobjekten finden Sie unter Verwenden von Rückrufobjekten. Ausführliche Informationen zum Registrieren von Rückrufobjekten finden Sie unter Verwenden von Rückrufobjekten.