PLMDebug
PLMDebug.exe ist ein Tool, mit dem Sie den Windows-Debugger zum Debuggen von Windows-Apps verwenden können, die unter Process Lifecycle Management (PLM) ausgeführt werden. Mit PLMDebug können Sie die manuelle Steuerung des Anhaltens, Fortsetzens und Beendens einer Windows-App übernehmen.
Tipp mit Windows 10, Version 1607 oder höher, können Sie die UWP-Befehle verwenden, z. B. .createpackageapp zum Debuggen von UWP-Apps. Weitere Informationen finden Sie unter Debuggen einer UWP-App mit WinDbg.
Wo kann PLMDebug abgerufen werden?
PLMDebug.exe ist in debugtools für Windows enthalten.
plmdebug /query [Package]
plmdebug /enableDebug Package [DebuggerCommandLine]
plmdebug /terminate Package
plmdebug /forceterminate Package
plmdebug /cleanterminate Package
plmdebug /suspend Package
plmdebug /resume Package
plmdebug /disableDebug Package
plmdebug /enumerateBgTasks Package
plmdebug /activateBgTask "{TaskID}"
Parameter
Paket
Der vollständige Name eines Pakets oder der ID eines ausgeführten Prozesses.
DebuggerCommandLine
Eine Befehlszeile zum Öffnen eines Debuggers. Die Befehlszeile muss den vollständigen Pfad zum Debugger enthalten. Wenn der Pfad Leerzeichen enthält, muss er in Anführungszeichen eingeschlossen werden. Die Befehlszeile kann auch Argumente enthalten. Im Folgenden finden Sie einige Beispiele:
"C:\Program Files (x86)\Windows Kits\8.0\Debuggers\x64\WinDbg.exe"
"\"C:\Program Files\Debugging Tools for Windows (x64)\WinDbg.exe\" -server npipe:pipe=test"
/query [Package]
Zeigt den Ausführungsstatus für ein installiertes Paket an. Wenn "Package" nicht angegeben ist, zeigt dieser Befehl die ausgeführten Status für alle installierten Pakete an.
/enableDebug Paket [DebuggerCommandLine]
Erhöht die Anzahl der Debugverweise für ein Paket. Das Paket ist von der PLM-Richtlinie ausgenommen, wenn es über eine Nicht-Null-Debugverweisanzahl verfügt. Jeder Aufruf von /enableDebug muss mit einem Aufruf von /disableDebug gekoppelt werden. Wenn Sie DebuggerCommandLine angeben, wird der Debugger angefügt, wenn eine app aus dem Paket gestartet wird.
/beenden Paket
Beendet ein Paket.
/forceTerminate Paket
Erzwingt das Beenden eines Pakets.
/cleanTerminate Paket
Hält an und beendet dann ein Paket.
/aufhängen Paket
Hält ein Paket an.
/fortsetzen Paket
Setzt ein Paket fort.
/disableDebug Paket
Erhöht die Anzahl der Debugverweise für ein Paket.
/enumerateBgTasks Paket
Aufzählen von Hintergrundaufgaben-IDs für ein Paket.
/activateBgTask "{TaskId}"
Aktiviert eine Hintergrundaufgabe. Beachten Sie, dass nicht alle Hintergrundaufgaben mit PLMDebug aktiviert werden können. Die TaskID muss in geschweifte Klammern und Anführungszeichen eingeschlossen werden. Zum Beispiel:
plmdebug.exe /activatebgtask "{29421c11-1e1a-47a4-9121-949ce9e25456}"
Hinweise
Sie müssen plmdebug /enableDebug aufrufen, bevor Sie eine der Funktionen anhalten, fortsetzen oder beenden.
Das PLMDebug-Tool ruft die Methoden der IPackageDebugSettings-Schnittstelle auf. Mit dieser Schnittstelle können Sie die manuelle Kontrolle über die Prozesslebenszyklusverwaltung für Ihre Apps übernehmen. Über diese Schnittstelle (und daher über dieses Tool) können Sie Ihre Windows-App anhalten, fortsetzen und beenden. Beachten Sie, dass die Methoden der IPackageDebugSettings-Schnittstelle auf ein gesamtes Paket angewendet werden. Anhalten, Fortsetzen und Beenden wirken sich auf alle derzeit ausgeführten Apps im Paket aus.
Beispiele
Beispiel 1
Anhängen eines Debuggers, wenn Ihre App gestartet wird
Angenommen, Sie haben eine App mit dem Namen MyApp, die sich in einem Paket mit dem Namen MyApp_1.0.0.0_x64__tnq5r49etfg3c befindet. Überprüfen Sie, ob Ihr Paket installiert ist, indem Sie sich die vollständigen Namen und den Status aller installierten Pakete anzeigen lassen. Geben Sie in einem Fenster der Eingabeaufforderung den folgenden Befehl ein.
plmdebug /query
Package full name: 1daa103b-74e1-426d-8193-b6bc7ed66fed_1.0.0.0_x86__tnq5r49etfg3c
Package state: Terminated
Package full name: 41fb5f27-7b60-4f5e-8459-803673131dd9_1.0.0.0_x86__tnq5r49etfg3c
Package state: Suspended
...
Package full name: MyApp_1.0.0.0_x64__tnq5r49etfg3c
Package state: Terminated
...
Erhöhen Sie die Anzahl der Debugverweise für Ihr Paket, und geben Sie an, dass WinDbg beim Starten der App angefügt werden soll.
plmdebug /enableDebug MyApp_1.0.0.0_x64__tnq5r49etfg3c "C:\Programme (x86)\Windows Kits\8.0\Debuggers\x64\WinDbg.exe"
Wenn Sie Ihre App starten, fügt WinDbg ihre App an und unterbricht sie ein.
Wenn Sie das Debuggen abgeschlossen haben, trennen Sie den Debugger. Dekrementieren Sie dann die Anzahl der Debugverweise für Ihr Paket.
plmdebug /disableDebug MyApp_1.0.0.0_x64__tnq5r49etfg3c
Beispiel 2
Anhängen eines Debuggers an eine App, die bereits ausgeführt wird
Angenommen, Sie möchten WinDbg an MyApp anhängen, das bereits ausgeführt wird. Wählen Sie in WinDbg im Menü File den Befehl Attach to a Process. Notieren Sie sich die Prozess-ID von MyApp. Sagen wir, die Prozess-ID lautet 4816.
Erhöhen Sie die Anzahl der Debug-Referenzen für das Package, das MyApp enthält.
plmdebug /enableDebug 4816
Wählen Sie in WinDbg im Dialogfeld "An Prozess anfügen" den Prozess 4816 aus, und wählen Sie "OK" aus. WinDbg wird sich an MyApp anhängen.
Wenn Sie das Debuggen von MyApp abgeschlossen haben, trennen Sie den Debugger. Decrement then decrement the debug reference count for the package.
plmdebug /disableDebug 4816
Beispiel 3
Manuelles Anhalten und Wiederaufnehmen Ihrer App
Angenommen, Sie möchten Ihre App manuell anhalten und fortsetzen. Erhöhen Sie zunächst die Anzahl der Debug-Referenzen für das Package, das Ihre App enthält.
plmdebug /enableDebug MyApp_1.0.0.0_x64__tnq5r49etfg3c
Halten Sie das Package an. Der Suspend-Handler Ihrer App wird aufgerufen, was für das Debugging hilfreich sein kann.
plmdebug /suspend MyApp_1.0.0.0_x64__tnq5r49etfg3c
Wenn Sie die Fehlersuche abgeschlossen haben, setzen Sie das Package wieder fort.
plmdebug /resume MyApp_1.0.0.0_x64__tnq5r49etfg3c
Verringern Sie schließlich die Anzahl der Debug-Referenzen für das Package.
plmdebug /disableDebug MyApp_1.0.0.0_x64__tnq5r49etfg3c
Beispiel 4
Manuelles Aktivieren einer Hintergrundaufgabe
Um eine Hintergrundaufgabe für das Debuggen manuell zu aktivieren, können Sie die Liste der registrierten Hintergrundaufgabe abfragen und dann über plmdebug aktivieren.
Erste Abfrage der Gruppe von registrierten Hintergrundaufgaben:
plmdebug /enumeratebgtasks MyApp_1.0.0.0_x64__tnq5r49etfg3c
Package full name is MyApp_1.0.0.0_x64__tnq5r49etfg3c.
Background Tasks:
SampleTask : {50DB0363-D722-4E23-A18F-1EF49B226CC3}
Wenn Sie sicherstellen möchten, dass die Aufgabe aktiviert wird, aktivieren Sie zuerst den Debugmodus. Opportunistische Aufgaben wie TimeTrigger-aktivierte Aufgaben werden z. B. nicht aktiviert, während sich das System im Stromsparmodus befindet. Durch aktivieren des Debugmodus im Paket wird sichergestellt, dass das System die Richtlinien ignoriert, die die Aktivierung andernfalls verhindern würden.
plmdebug /enabledebug MyApp_1.0.0.0_x64__tnq5r49etfg3c
Aktivieren Sie dann die gewünschte Aufgabe mithilfe der Registrierungs-GUID, die Sie auflisten.
plmdebug /activatebgtask "{50DB0363-D722-4E23-A18F-1EF49B226CC3}"