PLMDebug

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

Dica Com o 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 o WinDbg.

Onde obter o 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.

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

/enableDebug Pacote [DebuggerCommandLine]
Incrementa a contagem de referência de depuração para um pacote. O pacote estará isento da política de PLM se 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.

/terminar Pacote
Encerra um pacote.

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

/cleanTerminate Pacote
Suspende e encerra um pacote.

/suspender Pacote
Suspende um pacote.

/retomar Pacote
Retoma um pacote.

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

/enumerateBgTasks Pacote
Enumere IDs de tarefa em segundo plano para um pacote.

/ativarBgTarefa "{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 colocado entre 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 suspend, resume ou encerr.

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 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 os estados de execução de todos os pacotes instalados. Em uma janela do Prompt de Comando, digite 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 seu pacote e especifique que você deseja que o WinDbg seja anexado quando seu aplicativo for iniciado.

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

Quando você iniciar seu aplicativo, o WinDbg será anexado e invadido.

Quando terminar a depuração, desanexe o depurador. Em seguida, diminua a contagem de referência de depuração para seu 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 a MyApp, que já está em execução. No WinDbg, no menu Arquivo, escolha Anexar a um Processo. Anote 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 MyApp, desanexe o depurador. Em seguida, diminua a contagem de referência de depuração para o pacote.

plmdebug /disableDebug 4816

Exemplo 3

Suspender e retomar manualmente o 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 o aplicativo.

plmdebug /enableDebug MyApp_1.0.0.0_x64__tnq5r49etfg3c

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

plmdebug /suspend MyApp_1.0.0.0_x64__tnq5r49etfg3c

Quando terminar a depuração, retome o pacote.

plmdebug /resume MyApp_1.0.0.0_x64__tnq5r49etfg3c

Por fim, reduza a contagem de referência de depuração do 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, em seguida, 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, ative o modo de depuração primeiro. Por exemplo, tarefas oportunistas, como tarefas ativadas por TimeTrigger, não serão ativadas enquanto o sistema estiver economizando bateria. Habilitar o modo de depuração no pacote garantirá que o sistema ignore as políticas que impediriam 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 em segundo plano durante a depuração de aplicativos UWP no Visual Studio

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