Compartir a través de


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 procesos (PLM). Con PLMDebug, puedes tomar el control manual de suspender, reanudar y terminar una aplicación de Windows.

Sugerencia Con Windows 10, versión 1607 o posterior, puedes usar los comandos para UWP, como .createpackageapp para depurar aplicaciones para UWP. Para obtener más información, consulta Depurar 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 [Package]
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.

/enableDebug Paquete [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.

/terminar Paquete
Finaliza un paquete.

/forceTerminate Paquete
Fuerza la terminación de un paquete.

/cleanTerminate Paquete
Suspende y finaliza un paquete.

/suspender Paquete
Suspende un paquete.

/reanudar Paquete
Reanuda un paquete.

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

/enumerateBgTasks Paquete
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}"

Comentarios

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 tomar el control manual de la administración del ciclo de vida del proceso 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

Asociación de un depurador cuando se inicia la aplicación

Supongamos que tiene una aplicación denominada MyApp que está en un paquete denominado MyApp_1.0.0.0_x64___tnq5r49etfg3c. Compruebe que el paquete está instalado mostrando los nombres completos y ejecutando los estados 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 desea que WinDbg se adjunte cuando se inicie la aplicación.

plmdebug /enableDebug MyApp_1.0.0.0_x64___tnq5r49etfg3c "C:\Archivos de programa (x86)\Windows Kits\8.0\Debuggers\x64\WinDbg.exe"

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

Cuando haya terminado de depurar, desasocie el depurador. A continuación, reduzca el recuento de referencias de depuración para el 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 asociar 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, decremente el recuento de referencias de depuración para el paquete.

plmdebug /disableDebug 4816

Ejemplo 3

Suspensión y reanudación manuales de la aplicación

Supongamos que quiere suspender y reanudar manualmente la aplicación. En primer lugar incremente el recuento 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, lo 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, reduzca 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 la depuración, 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. Habilitar el modo de depuración en el paquete garantizará que el sistema omita las directivas que impedirían la activación de lo 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

Cómo desencadenar eventos de suspensión, reanudación y en segundo plano durante la depuración de aplicaciones para UWP en Visual Studio

Herramientas incluidas en herramientas de depuración para Windows