PLMDebug

PLMDebug.exe é uma ferramenta que permite que você use o depurador do Windows para depurar o aplicativo Windows, que é executado em PLM (Gerenciamento do Ciclo de Vida do Processo). Com PLMDebug, você pode assumir o controle manual de suspensão, retomada e encerramento de um aplicativo do Windows.

Ponta Com Windows 10, versão 1607 ou posterior, você pode usar os comandos UWP, como .createpackageapp para depurar aplicativos UWP. Para obter mais informações, consulte Depurando um aplicativo UWP usando WinDbg.

Onde obter PLMDebug

PLMDebug.exe está incluído nas Ferramentas de Depuração para 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}"

Parâmetros

Pacote
O nome completo de um pacote ou a ID de um processo em execução.

DepuradorCommandLine
Uma linha de comando para abrir um depurador. A linha de comando deve incluir o caminho completo para o depurador. Se o caminho tiver espaços em branco, ele deverá estar entre aspas. A linha de comando também pode incluir argumentos. Estes são alguns exemplos:

"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]
Exibe o estado em execução de um pacote instalado. Se Package não for especificado, esse comando exibirá os estados em execução para todos os pacotes instalados.

/enableDebugPackage [DebuggerCommandLine]
Incrementa a contagem de referência de depuração para um pacote. O pacote será isento da política PLM se ele tiver uma contagem de referência de depuração diferente de zero. Cada chamada para /enableDebug deve ser emparelhada com uma chamada para /disableDebug. Se você especificar DebuggerCommandLine, o depurador será anexado quando qualquer aplicativo do pacote for iniciado.

/terminatePackage
Encerra um pacote.

Pacote /forceTerminate
Força o encerramento de um pacote.

Pacote /cleanTerminate
Suspende e encerra um pacote.

Pacote /suspend
Suspende um pacote.

/resumePackage
Retoma um pacote.

Pacote /disableDebug
Diminui a contagem de referência de depuração de um pacote.

Pacote /enumerateBgTasks
Enumerar ids de tarefa em segundo plano para um pacote.

/activateBgTask "{TaskId}"
Ativa uma tarefa em segundo plano. Observe que nem todas as tarefas em segundo plano podem ser ativadas usando PLMDebug. O TaskID deve ser encapsulado em chaves e aspas. Por exemplo:

plmdebug.exe /activatebgtask "{29421c11-1e1a-47a4-9121-949ce9e25456}"

Comentários

Você deve chamar plmdebug /enableDebug antes de chamar qualquer uma das funções de suspensão, retomada ou término.

A ferramenta PLMDebug chama os métodos da interface IPackageDebugSettings. Essa interface permite que você assuma o controle manual do gerenciamento do ciclo de vida do processo para seus aplicativos. Por meio dessa interface (e, como resultado, por meio dessa ferramenta), você pode suspender, retomar e encerrar seu aplicativo do Windows. Observe que os métodos da interface IPackageDebugSettings se aplicam a um pacote inteiro. Suspender, retomar e encerrar afetam todos os aplicativos em execução no momento no pacote.

Exemplos

Exemplo 1

Anexar um depurador quando o aplicativo for iniciado

Suponha que você tenha um aplicativo chamado MyApp que esteja em um pacote chamado MyApp_1.0.0.0_x64__tnq5r49etfg3c. Verifique se o pacote está instalado exibindo os nomes completos e executando estados todos os pacotes instalados. Em uma janela do Prompt de Comando, insira o comando a seguir.

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
...

Incremente a contagem de referência de depuração para o pacote e especifique que você deseja que o WinDbg seja anexado quando o aplicativo for iniciado.

plmdebug /enableDebug MyApp_1.0.0.0_x64__tnq5r49etfg3c "C:\Program Files (x86)\Windows Kits\8.0\Debuggers\x64\WinDbg.exe"

Quando você iniciar seu aplicativo, o WinDbg anexará e interromperá.

Quando terminar de depurar, desanexe o depurador. Em seguida, decremente a contagem de referência de depuração para o pacote.

plmdebug /disableDebug MyApp_1.0.0.0_x64__tnq5r49etfg3c

Exemplo 2

Anexar um depurador a um aplicativo que já está em execução

Suponha que você queira anexar o WinDbg ao MyApp, que já está em execução. No WinDbg, no menu Arquivo , escolha Anexar a um Processo. Observe a ID do processo para MyApp. Digamos que a ID do processo seja 4816.

Incremente a contagem de referência de depuração para o pacote que contém MyApp.

plmdebug /enableDebug 4816

No WinDbg, na caixa de diálogo Anexar ao Processo , selecione o processo 4816 e selecione OK. O WinDbg será anexado ao MyApp.

Quando terminar de depurar o MyApp, desanexe o depurador. Em seguida, decremente a contagem de referência de depuração para o pacote.

plmdebug /disableDebug 4816

Exemplo 3

Suspender e retomar manualmente seu aplicativo

Suponha que você queira suspender e retomar manualmente seu aplicativo. Primeiro, incremente a contagem de referência de depuração para o pacote que contém seu aplicativo.

plmdebug /enableDebug MyApp_1.0.0.0_x64__tnq5r49etfg3c

Suspender o pacote. O manipulador de suspensão do aplicativo é chamado, o que pode ser útil para depuração.

plmdebug /suspend MyApp_1.0.0.0_x64__tnq5r49etfg3c

Quando terminar de depurar, retome o pacote.

plmdebug /resume MyApp_1.0.0.0_x64__tnq5r49etfg3c

Por fim, decremente a contagem de referência de depuração para o pacote.

plmdebug /disableDebug MyApp_1.0.0.0_x64__tnq5r49etfg3c

Exemplo 4

Ativar manualmente uma tarefa em segundo plano

Para ativar manualmente uma tarefa em segundo plano para depuração, você pode consultar a lista de tarefas em segundo plano registradas e ativá-la por meio de plmdebug.

Primeiro, consulte o conjunto de tarefas em segundo plano registradas:

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 você quiser garantir que a tarefa seja ativada, habilite primeiro o modo de depuração. Por exemplo, tarefas oportunistas, como tarefas ativadas pelo TimeTrigger, não serão ativadas enquanto o sistema estiver na economia de bateria. Habilitar o modo de depuração no pacote garantirá que o sistema ignore as políticas que evitariam a ativação de outra forma.

plmdebug /enabledebug MyApp_1.0.0.0_x64__tnq5r49etfg3c

Em seguida, ative a tarefa desejada usando seu GUID de registro, que você enumerou.

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

Confira também

Como disparar eventos de suspensão, retomada e segundo plano durante a depuração de aplicativos UWP no Visual Studio

Ferramentas incluídas nas ferramentas de depuração para Windows