閱讀英文

共用方式為


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

另請參閱

如何在 Visual Studio 中偵錯 UWP 應用程式時觸發暫停、繼續和背景事件

Windows 偵錯工具中包含的工具