Freigeben über


Ziele

Das Debuggermodul unterstützt das Debuggen verschiedener Zieltypen, Benutzermodus - und Kernelmodusziele , Liveziele und Absturzabbilddateien sowie lokale und Remoteziele. Es gibt verschiedene Methoden für den Anschluss des Motors an diese verschiedenen Zieltypen.

Absturzabbilddateien

Sowohl benutzermodus als auch Kernelmodus-Absturzabbilddateien werden mit OpenDumpFile geöffnet. Das Modul kann auch Dumpdateien aus einem Ziel mit WriteDumpFile2 erstellen.

Live, User-Mode-Ziele

Die Debugger-Engine kann sowohl Benutzermodusprozesse erstellen als auch anhängen.

Das Erstellen eines Prozesses erfolgt durch Bereitstellen einer Befehlszeile und optional eines anfänglichen Verzeichnisses und einer Umgebung für den neuen Prozess. Das Modul kann dann eine Verbindung mit dem neuen Prozess herstellen oder den neuen Prozess ausgesetzt lassen, während es eine Verbindung mit einem anderen Prozess herstellt. Wenn Sie beispielsweise eine Anwendung debuggen, die aus einem Client und einem Server besteht, ist es möglich, einen Client in einem angehaltenen Zustand zu erstellen und an einen bereits ausgeführten Server anzufügen, sodass Server-Haltepunkte festgelegt werden können, bevor der Client ausgeführt wird und Servervorgänge provoziert.

Wenn die Engine von einem Prozess getrennt wird, kann die Engine optional den Prozess normal weiterlaufen lassen, den Prozess beenden oder den Prozess aufgeben (er wird angehalten, bis ein anderer Debugger an ihn anfügt oder er beendet wird).

Die Engine kann nach Informationen zu allen Benutzer-Modus-Prozessen abgefragt werden, die auf dem Computer ausgeführt werden, einschließlich der Prozess-ID und des Namens der ausführbaren Datei, die zum Starten des Prozesses verwendet wird. Diese Informationen können verwendet werden, um einen Prozess zum Debuggen zu finden.

Live-, Kernel-Mode Ziele

Die Methode AttachKernel verbindet das Debuggermodul mit einem Windows-Kernel.

Fernziele

Wenn Sie das Debuggermodul zum Remotedebugging verwenden, gibt es möglicherweise zwei zusätzliche Schritte:

  1. Stellen Sie eine Verbindung mit dem Hostmodul her. Wenn das Hostmodul nicht die lokale Modulinstanz ist, verwenden Sie DebugConnect , um ein Clientobjekt zu erstellen, das mit dem Hostmodul verbunden ist.

  2. Verbinden Sie das Hostmodul mit dem Prozessserver oder Kernelverbindungsserver. Wenn das Hostmodul keine direkte Verbindung mit dem Ziel herstellen kann, muss es eine Verbindung mit einem Prozessserver oder Kernelverbindungsserver herstellen, der dies tut.

Nun kann der Client das Hostmodul anweisen, ein Ziel über den Prozessserver oder Kernel-Verbindungsserver zu erfassen.

Erfassung von Zielen

Beim Erfassen eines Ziels ist die Erfassung erst abgeschlossen, wenn das Ziel ein Ereignis erzeugt. In der Regel bedeutet dies, dass zuerst eine Methode aufgerufen wird, um den Debugger an das Ziel anzufügen, und dann WaitForEvent aufruft, damit das Ziel ein Ereignis generiert. Dies gilt weiterhin, wenn das Ziel eine Absturzabbilddatei ist, da diese immer ein Ereignis speichern – typischerweise das Ereignis, das die Erstellung der Abbilderdatei verursachte.

Zusätzliche Informationen

Ausführliche Informationen zum Anfügen an Ziele finden Sie unter "Herstellen einer Verbindung mit Zielen".