Freigeben über


!bpid

Die Erweiterung !bpid verlangt, dass ein Prozess auf dem Zielcomputer in den Debugger einbricht oder dass ein Debugger im Benutzermodus an einen Prozess auf dem Zielcomputer angehängt wird.

    !bpid [Options] PID 

Parameter

Option
Steuert die zusätzlichen Aktivitäten dieses Befehls.

Die gültigen Werte für die Option sind in der folgenden Tabelle aufgeführt.

-a

Hängt einen neuen Debugger für den Benutzermodus an den durch PID angegebenen Prozess an. Der Debugger für den Benutzermodus läuft auf dem Zielrechner.

-s

Fügt einen Haltepunkt hinzu, der im WinLogon-Prozess unmittelbar vor der Unterbrechung in dem durch PID angegebenen Benutzermodus-Prozess auftritt. So kann der Benutzer die Anfrage überprüfen, bevor er versucht, die Aktion durchzuführen.

-w

Speichert die Anfrage im Speicher des Zielcomputers. Das Zielsystem kann dann die Anfrage wiederholen, was aber in der Regel nicht notwendig ist.

PID
Gibt die Prozess-ID des gewünschten Prozesses auf dem Zielcomputer an. Wenn Sie dies verwenden, um einen Debugger im Benutzermodus auf dem Zielcomputer zu steuern, sollte PID die Prozess-ID der Zielanwendung sein, nicht die des Debuggers im Benutzermodus. (Da Prozess-IDs in der Regel im Dezimalformat aufgelistet werden, müssen Sie eventuell 0n voranstellen oder in das Hexadezimalformat konvertieren)

DLL

Kdexts.dll

Dieser Erweiterungsbefehl wird auf x86-basierten und x64-basierten Zielcomputern unterstützt.

Hinweise

Dieser Befehl ist besonders nützlich, wenn Sie Ein- und Ausgaben von einem Debugger im Benutzermodus an den Kernel-Debugger umleiten wollen. Er veranlasst die Zielanwendung im Benutzermodus, in den Benutzermodus-Debugger einzudringen, der wiederum Eingaben vom Kernel-Debugger anfordert. Details finden Sie unter Steuern des Benutzermodusdebuggers aus dem Kerneldebugger.

Wenn dieser Befehl in einer anderen Situation verwendet wird, ruft der Prozess im Benutzermodus DbgBreakPoint auf. Dies führt normalerweise direkt zum Kernel-Debugger.

Die Option -s bewirkt eine Unterbrechung von WinLogon, kurz bevor die Unterbrechung im angegebenen Prozess erfolgt. Dies ist nützlich, wenn Sie Debugging-Aktionen innerhalb des Prozesskontextes von WinLogon durchführen wollen. Mit dem Befehl g (Go) können Sie dann zur zweiten Pause übergehen.

Beachten Sie, dass es verschiedene Möglichkeiten gibt, wie diese Erweiterung nicht ausgeführt werden kann:

  • Mangel an Ressourcen. Die Erweiterung !bpid fügt einen Thread in den Zielprozess ein, daher muss das System über genügend Ressourcen verfügen, um einen Thread zu erstellen. Die Verwendung der Option -a erfordert noch mehr Systemressourcen, da !bpid -a eine vollständige Instanz eines Debuggers auf dem Zielcomputer ausführen muss.

  • Die Sperre des Ladeprogramms ist bereits aufgehoben. Sowohl !bpid als auch !bpid -a erfordern, dass ein Thread im Zielprozess läuft, damit dieser in den Debugger einbricht. Wenn ein anderer Thread die Sperre des Ladeprogramms hält, kann der Thread !bpid nicht ausgeführt werden, und ein Umbruch in den Debugger kann nicht erfolgen. Wenn also !bpid fehlschlägt, obwohl genügend Speicher im Benutzermodus für den Zielprozess verfügbar ist, ist es möglich, dass die Ladesperre gehalten wird.

  • Fehlende Genehmigung. Der Betrieb der !bpid-Erweiterung erfordert eine ausreichende Berechtigung für WinLogon, um einen entfernten Thread zu erstellen und einen Debugger an einen bestimmten Prozess anzuhängen.

  • Kein Zugriff auf ntsd.exe. Wenn ntsd.exe nicht in einem allgemein bekannten Pfad gefunden wird, gelingt es !bpid nicht, eine geeignete PID zu setzen. Beachten Sie, dass die Datei ntsd.exe in Windows Vista nicht standardmäßig enthalten ist.