PLMDebug

PLMDebug.exe è uno strumento che consente di usare il debugger Windows per eseguire il debug dell'app di Windows, che viene eseguita in Gestione del ciclo di vita del processo (PLM). Con PLMDebug puoi assumere il controllo manuale della sospensione, ripresa e terminazione di un'app di Windows.

Mancia Con Windows 10, versione 1607 o successiva, puoi usare i comandi UWP, ad esempio .createpackageapp per eseguire il debug delle 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

Pacchetto
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 in esecuzione per tutti i pacchetti installati.

Pacchetto /enableDebug [DebuggerCommandLine]
Incrementa il conteggio dei riferimenti di debug per un pacchetto. Il pacchetto è esente dai criteri PLM se ha un numero di 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.

/terminatePackage
Termina un pacchetto.

/forceTerminatePackage
Forza la chiusura di un pacchetto.

/cleanTerminatePackage
Sospende e quindi termina un pacchetto.

/suspendPackage
Sospende un pacchetto.

/resumePackage
Riprende un pacchetto.

/disableDebugPackage
Decrementa il conteggio dei riferimenti di debug per un pacchetto.

Pacchetto /enumerateBgTasks
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 usando 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 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 del processo 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.

Esempio

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 in esecuzione 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 che WinDbg venga collegato 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 avvii l'app, WinDbg si allegherà e si interromperà.

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 Collega a un processo dal menu File. Prendere nota dell'ID 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. Incrementare prima di tutto il numero di 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 GUID di registrazione, enumerato.

plmdebug /activatebgtask "{50DB0363-D722-4E23-A18F-1EF49B226CC3}"

Vedi anche

Come attivare eventi di sospensione, ripresa e in background durante il debug delle app UWP in Visual Studio

Strumenti inclusi negli strumenti di debug per Windows