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
Ferramentas incluídas nas ferramentas de depuração para Windows