Ziele
Das Debuggermodul unterstützt das Debuggen verschiedener Typen von Zielen, Zielen im Benutzermodus und Kernelmodus , Livezielen und Absturzabbilddateien sowie lokalen und Remotezielen. Es gibt verschiedene Methoden, um die Engine mit diesen verschiedenen Arten von Zielen zu verbinden.
Absturzabbilddateien
Sowohl Benutzermodus- als auch Kernelmodusabbilddateien werden mit OpenDumpFile geöffnet. Die Engine kann mit WriteDumpFile2 auch Dumpdateien aus einem Ziel erstellen.
Live,User-Mode Targets
Die Debugger-Engine kann Prozesse im Benutzermodus erstellen und an diese anfügen.
Das Erstellen eines Prozesses erfolgt durch Bereitstellen einer Befehlszeile und optional eines anfänglichen Verzeichnisses und einer Umgebung für den neuen Prozess. Die Engine kann dann eine Verbindung mit dem neuen Prozess herstellen oder den neuen Prozess anhalten, während er eine Verbindung mit einem anderen Prozess herstellt. Beim Debuggen einer Anwendung, die sowohl aus einem Client als auch einem Server besteht, ist es beispielsweise 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 werden.
Beim Trennen von einem Prozess kann die Engine den Prozess optional normal laufen lassen, den Prozess beenden oder den Prozess abbrechen (er bleibt angehalten, bis ein anderer Debugger an ihn angefügt wird oder er beendet wird).
Das Modul kann nach Informationen zu allen auf dem Computer ausgeführten Benutzermodusprozessen abgefragt werden, einschließlich der Prozess-ID und des Namens des ausführbaren Images, das zum Starten des Prozesses verwendet wird. Diese Informationen können verwendet werden, um einen Zu debuggenden Prozess zu finden.
Live,Kernel-Mode Targets
Die Methode AttachKernel verbindet die Debugger-Engine mit einem Windows-Kernel.
Remoteziele
Wenn Sie die Debugger-Engine zum Remotedebuggen verwenden, gibt es möglicherweise zwei zusätzliche Schritte:
Stellen Sie eine Verbindung mit der Host-Engine her. Wenn die Host-Engine nicht die lokale Engine instance ist, verwenden Sie DebugConnect, um ein Clientobjekt zu erstellen, das mit der Host-Engine verbunden ist.
Verbinden Sie die Host-Engine mit dem Prozessserver oder Kernelverbindungsserver. Wenn die Host-Engine keine direkte Verbindung mit dem Ziel herstellt, muss sie eine Verbindung mit einem Prozessserver oder Kernelverbindungsserver herstellen, der dies tut.
Nun kann der Client die Host-Engine anweisen, ein Ziel über den Prozessserver oder Kernelverbindungsserver zu erhalten.
Abrufen von Zielen
Beim Abrufen eines Ziels ist der Erwerb des Ziels erst abgeschlossen, wenn das Ziel ein Ereignis generiert. Dies bedeutet in der Regel zuerst das Aufrufen einer Methode zum Anfügen des Debuggers an das Ziel, und dann das Aufrufen von WaitForEvent , damit das Ziel ein Ereignis generieren kann. Dies gilt weiterhin, wenn es sich bei dem Ziel um eine Absturzabbilddatei handelt, da diese immer ein Ereignis speichern– in der Regel das Ereignis, das die Erstellung der Dumpdatei verursacht hat.
Weitere Informationen
Ausführliche Informationen zum Anfügen an Ziele finden Sie unter Herstellen einer Verbindung mit Zielen.