PLMDebug
PLMDebug.exeは、Windows デバッガーを使用して、プロセス ライフサイクル管理 (PLM) で実行される Windows アプリをデバッグできるツールです。 PLMDebug を使用すると、Windows アプリの中断、再開、終了を手動で制御できます。
ヒント : Windows 10 バージョン 1607 以降では、.createpackageapp などの UWP コマンドを使用して UWP アプリをデバッグできます。 詳細については、「 WinDbg を使用した UWP アプリのデバッグ」を参照してください。
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}"
パラメーター
Package
パッケージの完全な名前または実行中のプロセスの ID。
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 [Package]
インストールされているパッケージの実行状態を表示します。 パッケージ が指定されていない場合、このコマンドはインストールされているすべてのパッケージの実行中の状態を表示します。
/enableDebug Package [DebuggerCommandLine]
パッケージのデバッグ参照カウントをインクリメントします。 パッケージに 0 以外のデバッグ参照カウントがある場合、パッケージは PLM ポリシーから除外されます。 /enableDebug への各呼び出しは、 /disableDebug への呼び出しと組み合わせる必要があります。 DebuggerCommandLine を指定すると、パッケージのアプリが起動されたときにデバッガーがアタッチされます。
/terminate パッケージ
パッケージを終了します。
/forceTerminate パッケージ
パッケージの強制終了。
/cleanTerminate パッケージ
パッケージを一時停止してから終了します。
/suspend パッケージ
パッケージを中断します。
/再開 パッケージ
パッケージを再開します。
/disableDebug パッケージ
パッケージのデバッグ参照カウントをデクリメントします。
/enumerateBgTasks パッケージ
パッケージのバックグラウンド タスク ID を列挙します。
/activateBgTask"{TaskId}"
バックグラウンド タスクをアクティブにします。 PLMDebug を使用してすべてのバックグラウンド タスクをアクティブ化できるわけではないことに注意してください。 TaskID は、中かっこと引用符で囲む必要があります。 次に例を示します。
plmdebug.exe /activatebgtask "{29421c11-1e1a-47a4-9121-949ce9e25456}"
解説
中断、再開、または終了のいずれかの関数を呼び出 す前に、 plmdebug /enableDebug を呼び出す必要があります。
PLMDebug ツールは、 IPackageDebug設定 インターフェイス のメソッドを呼び出します。 このインターフェイスを使用すると、アプリのプロセス ライフサイクル管理を手動で制御できます。 このインターフェイスを使用して (その結果、このツールを使用して)、Windows アプリを一時停止、再開、終了できます。 IPackageDebug設定 インターフェイス のメソッドはパッケージ全体に適用されることに注意してください。 一時停止、再開、終了は、パッケージ内で現在実行中のすべてのアプリに影響します。
例
例 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
既に実行されているアプリにデバッガーをアタッチする
既に実行中の MyApp に WinDbg をアタッチするとします。 WinDbg で、 [ファイル] メニューの [プロセスへのアタッチ] を選択します。 MyApp のプロセス ID をメモします。 プロセス ID が 4816 であるとします。
MyApp を含むパッケージのデバッグ参照カウントをインクリメントします。
plmdebug /enableDebug 4816
WinDbg の [ プロセスにアタッチ ダイアログ ボックスで、プロセス 4816 を選択し、 OK を選択します。 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}"
関連項目
Visual Studio で UWP アプリをデバッグするときに、中断、再開、およびバックグラウンド イベントをトリガーする方法