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}"

См. также

Как активировать приостановку, возобновление и фоновые события при отладке приложений UWP в Visual Studio

Средства, включенные в средства отладки для Windows