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 [пакет]
Отображает состояние выполнения для установленного пакета. Если пакет не указан, эта команда отображает состояния выполнения для всех установленных пакетов.

/enableDebugPackage [DebuggerCommandLine]
Увеличивает количество ссылок отладки для пакета. Пакет исключается из политики PLM, если у него есть ненулевое число ссылок на отладку. Каждый вызов /enableDebug должен быть связан с вызовом /disableDebug. Если указать DebuggerCommandLine, отладчик будет подключаться при запуске любого приложения из пакета.

/terminatePackage
Завершает работу пакета.

/forceTerminatePackage
Принудительное завершение пакета.

/cleanTerminatePackage
Приостанавливает, а затем завершает работу пакета.

/suspendPackage
Приостанавливает пакет.

/resumePackage
Возобновляет работу пакета.

/disableDebugPackage
Уменьшает количество ссылок отладки для пакета.

/enumerateBgTasks Package
Перечисление идентификаторов фоновых задач для пакета.

/activateBgTask "{TaskId}"
Активирует фоновую задачу. Обратите внимание, что не все фоновые задачи можно активировать с помощью PLMDebug. TaskID должен быть заключен в фигурные скобки и кавычки. Пример:

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

Remarks

Перед вызовом любой функции приостановки, возобновления или завершения необходимо вызвать plmdebug /enableDebug .

Средство PLMDebug вызывает методы интерфейса IPackageDebugSettings. Этот интерфейс позволяет вручную управлять жизненным циклом процессов для приложений. С помощью этого интерфейса (и, как следствие, с помощью этого средства) вы можете приостановить, возобновить и завершить работу приложения Для Windows. Обратите внимание, что методы интерфейса IPackageDebugSettings применяются ко всему пакету. Приостановка, возобновление и завершение работы влияет на все запущенные в данный момент приложения в пакете.

Примеры

Пример 1

Подключение отладчика при запуске приложения

Предположим, у вас есть приложение с именем MyApp, которое находится в пакете с именем MyApp_1.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