PLMDebug
PLMDebug.exe è uno strumento che consente di usare il debugger Di Windows per eseguire il debug dell'app Windows, eseguita in Gestione del ciclo di vita dei processi (PLM). Con PLMDebug puoi assumere il controllo manuale della sospensione, ripresa e terminazione di un'app di Windows.
Suggerimento Con Windows 10, versione 1607 o successiva, puoi usare i comandi UWP, ad esempio .createpackageapp per eseguire il debug di app UWP. Per altre informazioni, vedi Debug di un'app UWP con WinDbg.
Dove ottenere PLMDebug
PLMDebug.exe è incluso in Strumenti di debug per Windows.
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}"
Parametri
Pacco
Nome completo di un pacchetto o ID di un processo in esecuzione.
DebuggerCommandLine
Riga di comando per aprire un debugger. La riga di comando deve includere il percorso completo del debugger. Se il percorso contiene spazi vuoti, deve essere racchiuso tra virgolette. La riga di comando può includere anche argomenti. Di seguito sono riportati alcuni esempi.
"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 [Pacchetto]
Visualizza lo stato di esecuzione di un pacchetto installato. Se package non è specificato, questo comando visualizza gli stati di esecuzione per tutti i pacchetti installati.
/enableDebug Pacchetto [DebuggerCommandLine]
Incrementa il conteggio dei riferimenti di debug per un pacchetto. Il pacchetto è esente dai criteri PLM se ha un conteggio dei riferimenti di debug diverso da zero. Ogni chiamata a /enableDebug deve essere associata a una chiamata a /disableDebug. Se si specifica DebuggerCommandLine, il debugger verrà collegato all'avvio di qualsiasi app del pacchetto.
/terminare Pacco
Termina un pacchetto.
/forceTerminate Pacco
Forza la chiusura di un pacchetto.
/cleanTerminate Pacco
Sospende e quindi termina un pacchetto.
/sospendere Pacco
Sospende un pacchetto.
/riassumere Pacco
Riprende un pacchetto.
/disableDebug Pacco
Decrementa il conteggio dei riferimenti di debug per un pacchetto.
/enumerateBgTasks Pacco
Enumerare gli ID attività in background per un pacchetto.
/activateBgTask "{TaskId}"
Attiva un'attività in background. Si noti che non tutte le attività in background possono essere attivate tramite PLMDebug. TaskID deve essere racchiuso tra parentesi graffe e virgolette. Ad esempio:
plmdebug.exe /activatebgtask "{29421c11-1e1a-47a4-9121-949ce9e25456}"
Osservazioni:
È necessario chiamare plmdebug /enableDebug prima di chiamare una qualsiasi delle funzioni suspend, resume o terminate.
Lo strumento PLMDebug chiama i metodi dell'interfaccia IPackageDebugSettings. Questa interfaccia consente di assumere il controllo manuale della gestione del ciclo di vita dei processi per le app. Tramite questa interfaccia (e di conseguenza, tramite questo strumento), puoi sospendere, riprendere e terminare l'app di Windows. Si noti che i metodi dell'interfaccia IPackageDebugSettings si applicano a un intero pacchetto. Sospendere, riprendere e terminare influiscono su tutte le app attualmente in esecuzione nel pacchetto.
Esempi
Esempio 1
Collegare un debugger all'avvio dell'app
Si supponga di avere un'app denominata MyApp che si trova in un pacchetto denominato MyApp_1.0.0.0_x64__tnq5r49etfg3c. Verificare che il pacchetto sia installato visualizzando i nomi completi e gli stati di esecuzione di tutti i pacchetti installati. In una finestra del prompt dei comandi immettere il comando seguente.
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
...
Incrementare il numero di riferimenti di debug per il pacchetto e specificare che si vuole collegare WinDbg all'avvio dell'app.
plmdebug /enableDebug MyApp_1.0.0.0_x64__tnq5r49etfg3c "C:\Programmi (x86)\Windows Kits\8.0\Debuggers\x64\WinDbg.exe"
Quando si avvia l'app, WinDbg si connette e si interrompe.
Al termine del debug, scollegare il debugger. Decrementare quindi il conteggio dei riferimenti di debug per il pacchetto.
plmdebug /disableDebug MyApp_1.0.0.0_x64__tnq5r49etfg3c
Esempio 2
Collegare un debugger a un'app già in esecuzione
Si supponga di voler collegare WinDbg a MyApp, che è già in esecuzione. In WinDbg scegliere Connetti a un processo dal menu File. Prendere nota dell'ID del processo per MyApp. Si supponga che l'ID processo sia 4816.
Incrementare il numero di riferimenti di debug per il pacchetto che contiene MyApp.
plmdebug /enableDebug 4816
In WinDbg, nella finestra di dialogo Connetti a processo selezionare processo 4816 e selezionare OK. WinDbg verrà collegato a MyApp.
Al termine del debug di MyApp, scollegare il debugger. Decrementare quindi il conteggio dei riferimenti di debug per il pacchetto.
plmdebug /disableDebug 4816
Esempio 3
Sospendere e riprendere manualmente l'app
Si supponga di voler sospendere e riprendere manualmente l'app. Prima di tutto, incrementare il conteggio dei riferimenti di debug per il pacchetto che contiene l'app.
plmdebug /enableDebug MyApp_1.0.0.0_x64__tnq5r49etfg3c
Sospendere il pacchetto. Viene chiamato il gestore di sospensione dell'app, che può essere utile per il debug.
plmdebug /suspend MyApp_1.0.0.0_x64__tnq5r49etfg3c
Al termine del debug, riprendere il pacchetto.
plmdebug /resume MyApp_1.0.0.0_x64__tnq5r49etfg3c
Infine, decrementare il conteggio dei riferimenti di debug per il pacchetto.
plmdebug /disableDebug MyApp_1.0.0.0_x64__tnq5r49etfg3c
Esempio 4
Attivare manualmente un'attività in background
Per attivare manualmente un'attività in background per il debug, è possibile eseguire una query per l'elenco di attività in background registrate e quindi attivarla tramite plmdebug.
Prima di tutto eseguire una query sul set di attività in background registrate:
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}
Se si vuole garantire che l'attività venga attivata, abilitare prima la modalità di debug. Ad esempio, le attività opportunistiche come le attività attivate da TimeTrigger non verranno attivate mentre il sistema è nel risparmio batteria. L'abilitazione della modalità di debug nel pacchetto garantisce che il sistema ignori i criteri che impediscono l'attivazione in caso contrario.
plmdebug /enabledebug MyApp_1.0.0.0_x64__tnq5r49etfg3c
Attivare quindi l'attività desiderata usando il RELATIVO GUID di registrazione, enumerato.
plmdebug /activatebgtask "{50DB0363-D722-4E23-A18F-1EF49B226CC3}"