PLMDebug
PLMDebug.exe是一種工具,可讓您使用 Windows 調試程式來偵錯在進程生命週期管理 (PLM) 下執行的 Windows 應用程式。 使用 PLMDebug,您可以手動控制暫停、繼續和終止 Windows 應用程式。
提示 使用 Windows 10 版本 1607 或更新版本時,您可以使用 UWP 命令,例如 .createpackageapp 來偵錯 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}"
參數
包
封裝的完整名稱或執行中進程的標識碼。
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]
顯示已安裝套件的執行中狀態。 如果未 指定 Package ,此命令會顯示所有已安裝套件的執行狀態。
/enableDebug 封裝 [DebuggerCommandLine]
遞增封裝的偵錯參考計數。 如果套件具有非零偵錯參考計數,則套件會豁免 PLM 原則。 /enableDebug 的每個呼叫都必須與 /disableDebug 的呼叫配對。 如果您指定 DebuggerCommandLine,當套件中的任何應用程式啟動時,調試程式將會附加。
/終止 包
終止封裝。
/forceTerminate 包
強制終止封裝。
/cleanTerminate 包
暫停,然後終止封裝。
/暫停 包
暫停套件。
/恢復 包
繼續封裝。
/disableDebug 包
遞減封裝的偵錯參考計數。
/enumerateBgTasks 包
列舉封裝的背景工作標識碼。
/activateBgTask“{TaskId}”
啟動背景工作。 請注意,並非所有背景工作都可以使用 PLMDebug 來啟動。 TaskID 必須以大括弧和引弧括住。 例如:
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,該 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}”