PLMDebug

PLMDebug.exe es una herramienta que permite usar el depurador de Windows para depurar la aplicación de Windows, que se ejecuta en Administración del ciclo de vida de los procesos (PLM). Con PLMDebug, puedes tomar el control manual de la suspensión, reanudación y terminación de una aplicación de Windows.

Propina Con Windows 10, versión 1607 o posterior, puedes usar los comandos de UWP, como .createpackageapp para depurar aplicaciones para UWP. Para obtener más información, consulta Depuración de una aplicación para UWP con WinDbg.

Dónde obtener PLMDebug

PLMDebug.exe se incluye en Herramientas de depuración 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

Paquete
Nombre completo de un paquete o el identificador de un proceso en ejecución.

DebuggerCommandLine
Línea de comandos para abrir un depurador. La línea de comandos debe incluir la ruta de acceso completa al depurador. Si la ruta de acceso tiene espacios en blanco, debe incluirse entre comillas. La línea de comandos también puede incluir argumentos. Estos son algunos ejemplos:

"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 [Paquete]
Muestra el estado en ejecución de un paquete instalado. Si no se especifica Package , este comando muestra los estados en ejecución de todos los paquetes instalados.

/enableDebugPackage [DebuggerCommandLine]
Incrementa el recuento de referencias de depuración de un paquete. El paquete está exento de la directiva PLM si tiene un recuento de referencias de depuración distinto de cero. Cada llamada a /enableDebug debe emparejarse con una llamada a /disableDebug. Si especifica DebuggerCommandLine, el depurador se asociará cuando se inicie cualquier aplicación del paquete.

/terminatePackage
Finaliza un paquete.

/forceTerminatePackage
Fuerza la terminación de un paquete.

/cleanTerminatePackage
Suspende y finaliza un paquete.

/suspendPackage
Suspende un paquete.

/resumePackage
Reanuda un paquete.

/disableDebugPackage
Disminuye el recuento de referencias de depuración de un paquete.

/enumerateBgTasksPackage
Enumerar los identificadores de tarea en segundo plano de un paquete.

/activateBgTask "{TaskId}"
Activa una tarea en segundo plano. Tenga en cuenta que no todas las tareas en segundo plano se pueden activar mediante PLMDebug. El TaskID debe encapsularse entre llaves y comillas. Por ejemplo:

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

Observaciones

Debe llamar a plmdebug /enableDebug antes de llamar a cualquiera de las funciones de suspensión, reanudación o finalización.

La herramienta PLMDebug llama a los métodos de la interfaz IPackageDebugSettings. Esta interfaz le permite controlar manualmente la administración del ciclo de vida de los procesos para las aplicaciones. A través de esta interfaz (y como resultado, a través de esta herramienta), puedes suspender, reanudar y finalizar la aplicación de Windows. Tenga en cuenta que los métodos de la interfaz IPackageDebugSettings se aplican a un paquete completo. Suspender, reanudar y finalizar afecta a todas las aplicaciones que se están ejecutando actualmente en el paquete.

Ejemplos

Ejemplo 1

Adjuntar un depurador cuando se inicia la aplicación

Supongamos que tiene una aplicación denominada MyApp que se encuentra en un paquete denominado MyApp_1.0.0.0_x64__tnq5r49etfg3c. Compruebe que el paquete está instalado mostrando los nombres completos y los estados en ejecución de todos los paquetes instalados. En una ventana del símbolo del sistema, escriba el siguiente comando.

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 el recuento de referencias de depuración del paquete y especifique que quiere que WinDbg se adjunte cuando se inicie la aplicación.

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

Al iniciar la aplicación, WinDbg se asociará y se interrumpirá.

Cuando haya terminado de depurar, desasocie el depurador. A continuación, disminuya el recuento de referencias de depuración del paquete.

plmdebug /disableDebug MyApp_1.0.0.0_x64___tnq5r49etfg3c

Ejemplo 2

Asociación de un depurador a una aplicación que ya se está ejecutando

Supongamos que quiere adjuntar WinDbg a MyApp, que ya se está ejecutando. En WinDbg, en el menú Archivo , elija Asociar a un proceso. Anote el identificador de proceso de MyApp. Supongamos que el identificador de proceso es 4816.

Incremente el recuento de referencias de depuración del paquete que contiene MyApp.

plmdebug /enableDebug 4816

En WinDbg, en el cuadro de diálogo Asociar al proceso , seleccione proceso 4816 y seleccione Aceptar. WinDbg se asociará a MyApp.

Cuando haya terminado de depurar MyApp, desasocie el depurador. A continuación, disminuya el recuento de referencias de depuración para el paquete.

plmdebug /disableDebug 4816

Ejemplo 3

Suspender y reanudar manualmente la aplicación

Supongamos que quiere suspender y reanudar manualmente la aplicación. En primer lugar, incremente el número de referencias de depuración del paquete que contiene la aplicación.

plmdebug /enableDebug MyApp_1.0.0.0_x64___tnq5r49etfg3c

Suspenda el paquete. Se llama al controlador de suspensión de la aplicación, que puede resultar útil para la depuración.

plmdebug /suspend MyApp_1.0.0.0_x64__tnq5r49etfg3c

Cuando haya terminado de depurar, reanude el paquete.

plmdebug /resume MyApp_1.0.0.0_x64__tnq5r49etfg3c

Por último, disminuya el recuento de referencias de depuración para el paquete.

plmdebug /disableDebug MyApp_1.0.0.0_x64___tnq5r49etfg3c

Ejemplo 4

Activar manualmente una tarea en segundo plano

Para activar manualmente una tarea en segundo plano para depurar, puede consultar la lista de tareas en segundo plano registradas y, a continuación, activarla a través de plmdebug.

En primer lugar, consulte el conjunto de tareas en 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}

Si desea garantizar que la tarea se activa, habilite primero el modo de depuración. Por ejemplo, las tareas oportunistas como Las tareas activadas por TimeTrigger no se activarán mientras el sistema está en ahorro de batería. Al habilitar el modo de depuración en el paquete, se asegurará de que el sistema omita las directivas que impedirían la activación en caso contrario.

plmdebug /enabledebug MyApp_1.0.0.0_x64__tnq5r49etfg3c

A continuación, active la tarea deseada mediante su GUID de registro, que ha enumerado.

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

Consulte también

Desencadenamiento de eventos de suspensión, reanudación y en segundo plano al depurar aplicaciones para UWP en Visual Studio

Herramientas incluidas en herramientas de depuración para Windows