PLMDebug
PLMDebug.exe — это средство, которое позволяет использовать отладчик Windows для отладки приложения Windows, которое выполняется в разделе Управления жизненным циклом процессов (PLM). С помощью PLMDebug вы можете вручную контролировать приостановку, возобновление и завершение приложения Windows.
Совет с Windows 10 версии 1607 или более поздней версии можно использовать команды UWP, например createpackageapp для отладки приложений UWP. Дополнительные сведения см. в статье отладка приложения UWP с помощью WinDbg.
Где получить PLMDebug
PLMDebug.exe включен в средства отладки для 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}"
Параметры
Пакет
Полное имя пакета или идентификатор выполняемого процесса.
DebuggerCommandLine
Командная строка для открытия отладчика. Командная строка должна содержать полный путь к отладчику. Если путь имеет пустые пробелы, он должен быть заключен в кавычки. Командная строка также может включать аргументы. Далее приводятся некоторые примеры.
"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 [Пакет]
Отображает состояние выполнения для установленного пакета. Если пакет не указан, эта команда отображает состояния выполнения для всех установленных пакетов.
/enableDebug Пакет [DebuggerCommandLine]
Увеличивает число ссылок отладки для пакета. Пакет освобождается от политики PLM, если он имеет ненулевое число ссылок на отладку. Каждый вызов /enableDebug должен быть связан с вызовом /disableDebug. Если указать DebuggerCommandLine, отладчик будет присоединяться при запуске любого приложения из пакета.
/кончать Пакет
Завершает пакет.
/forceTerminate Пакет
Принудительное завершение пакета.
/cleanTerminate Пакет
Приостанавливается, а затем завершается пакет.
/приостанавливать Пакет
Приостанавливает пакет.
/резюме Пакет
Возобновляет пакет.
/disableDebug Пакет
Уменьшает количество ссылок отладки для пакета.
/enumerateBgTasks Пакет
Перечисление идентификаторов фоновой задачи для пакета.
/activateBgTask "{TaskId}"
Активирует фоновую задачу. Обратите внимание, что не все фоновые задачи можно активировать с помощью PLMDebug. Идентификатор задачи должен быть упакован в фигурные скобки и кавычки. Например:
plmdebug.exe /activatebgtask "{29421c11-1e1a-47a4-9121-949ce9e25456}"
Замечания
Перед вызовом любой функции приостановки, возобновления или завершения работы необходимо вызвать plmdebug /enableDebug .
Средство PLMDebug вызывает методы интерфейса IPackageDebugSettings. Этот интерфейс позволяет управлять жизненным циклом процессов для приложений вручную. В этом интерфейсе (и в результате с помощью этого средства) можно приостановить, возобновить и завершить работу приложения Для Windows. Обратите внимание, что методы интерфейса IPackageDebugSettings применяются ко всему пакету. Приостановка, возобновление и прекращение работы влияют на все запущенные в данный момент приложения в пакете.
Примеры
Пример 1
Присоединение отладчика при запуске приложения
Предположим, у вас есть приложение с именем MyApp, которое находится в пакете с именем MyApp_1.0.0.0_x64__tnq5r49etfg3c. Убедитесь, что пакет установлен, отображая полные имена и выполняя состояния всех установленных пакетов. В окне командной строки введите следующую команду.
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
...
Увеличьте число ссылок отладки для пакета и укажите, что WinDbg будет присоединен при запуске приложения.
plmdebug /enableDebug MyApp_1.0.0.0_x64__tnq5r49etfg3c "C:\Program Files (x86)\Windows Kits\8.0\Debuggers\x64\WinDbg.exe"
При запуске приложения WinDbg прикрепляется и прерывается.
После завершения отладки отсоедините отладчик. Затем разрежение счетчика ссылок отладки для пакета.
plmdebug /disableDebug MyApp_1.0.0.0_x64__tnq5r49etfg3c
Пример 2
Присоединение отладчика к приложению, которое уже запущено
Предположим, вы хотите подключить WinDbg к MyApp, который уже запущен. В WinDbg в меню "Файл " выберите "Присоединиться к процессу". Обратите внимание на идентификатор процесса для MyApp. Предположим, что идентификатор процесса равен 4816.
Увеличьте число ссылок отладки для пакета, содержащего MyApp.
plmdebug /enableDebug 4816
В WinDbg в диалоговом окне "Присоединение к процессу " выберите процесс 4816 и нажмите кнопку "ОК". WinDbg присоединится к MyApp.
Завершив отладку MyApp, отсоедините отладчик. Затем уменьшает количество ссылок отладки для пакета.
plmdebug /disableDebug 4816
Пример 3
Приостановка и возобновление приложения вручную
Предположим, что вы хотите вручную приостановить и возобновить работу приложения. Во-первых, увеличьте число ссылок отладки для пакета, содержащего приложение.
plmdebug /enableDebug MyApp_1.0.0.0_x64__tnq5r49etfg3c
Приостановка пакета. Вызывается обработчик приостановки приложения, который может оказаться полезным для отладки.
plmdebug /suspend MyApp_1.0.0.0_x64__tnq5r49etfg3c
Завершив отладку, возобновите пакет.
plmdebug /resume MyApp_1.0.0.0_x64__tnq5r49etfg3c
Наконец, разрежение счетчика ссылок отладки для пакета.
plmdebug /disableDebug MyApp_1.0.0.0_x64__tnq5r49etfg3c
Пример 4
Активация фоновой задачи вручную
Чтобы вручную активировать фоновую задачу для отладки, можно запросить список зарегистрированных фоновых задач, а затем активировать его с помощью plmdebug.
Сначала запросите набор фоновых задач, зарегистрированных:
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}
Если вы хотите гарантировать активацию задачи, сначала включите режим отладки. Например, оппортунистические задачи, такие как timeTrigger-активированные задачи, не будут активироваться, пока система находится в экономии батареи. Включение режима отладки в пакете гарантирует, что система игнорирует политики, которые будут препятствовать активации в противном случае.
plmdebug /enabledebug MyApp_1.0.0.0_x64__tnq5r49etfg3c
Затем активируйте нужную задачу с помощью guid регистрации, которую вы перечислили.
plmdebug /activatebgtask "{50DB0363-D722-4E23-A18F-1EF49B226CC3}"