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}"
매개 변수
패키지
패키지의 전체 이름 또는 실행 중인 프로세스의 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 [패키지]
설치된 패키지의 실행 상태를 표시합니다. 패키지를 지정하지 않으면 이 명령은 설치된 모든 패키지의 실행 상태를 표시합니다.
/enableDebug 패키지 [DebuggerCommandLine]
패키지에 대한 디버그 참조 수를 증분합니다. 패키지가 0이 아닌 디버그 참조 수가 있는 경우 PLM 정책에서 제외됩니다. /enableDebug에 대한 각 호출은 /disableDebug 호출과 쌍을 이루어야 합니다. DebuggerCommandLine을 지정하면 패키지의 앱이 시작될 때 디버거가 연결됩니다.
/끝내다 패키지
패키지를 종료합니다.
/forceTerminate 패키지
패키지를 강제로 종료합니다.
/cleanTerminate 패키지
패키지를 일시 중단한 다음 종료합니다.
/매달다 패키지
패키지를 일시 중단합니다.
/이력서 패키지
패키지를 다시 시작합니다.
/disableDebug 패키지
패키지에 대한 디버그 참조 수를 줄입니다.
/enumerateBgTasks 패키지
패키지의 백그라운드 작업 ID를 열거합니다.
/activateBgTask "{TaskId}"
백그라운드 작업을 활성화합니다. PLMDebug를 사용하여 모든 백그라운드 작업을 활성화할 수 있는 것은 아닙니다. TaskID는 중괄호와 따옴표로 묶어야 합니다. 예시:
plmdebug.exe /activatebgtask "{29421c11-1e1a-47a4-9121-949ce9e25456}"
설명
suspend, resume 또는 terminate 함수를 호출하기 전에 plmdebug /enableDebug를 호출해야 합니다.
PLMDebug 도구는 IPackageDebugSettings 인터페이스의 메서드를 호출합니다. 이 인터페이스를 사용하면 앱에 대한 프로세스 수명 주기 관리를 수동으로 제어할 수 있습니다. 이 인터페이스를 통해(결과적으로 이 도구를 통해) Windows 앱을 일시 중단, 다시 시작 및 종료할 수 있습니다. IPackageDebugSettings 인터페이스의 메서드는 전체 패키지에 적용됩니다. 일시 중단, 다시 시작 및 종료는 패키지에서 현재 실행 중인 모든 앱에 영향을 미칩니다.
예제
예제 1
앱이 시작될 때 디버거 연결
MyApp_1.0.0.0_x64__tnq5r49etfg3c라는 패키지에 MyApp이라는 앱이 있다고 가정해 보겠습니다. 전체 이름을 표시하고 설치된 모든 패키지를 실행하여 패키지가 설치되어 있는지 확인합니다. 명령 프롬프트 창에서 다음 명령을 입력합니다.
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을 선택하고 확인을 선택합니다. 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 앱을 디버깅하는 동안 일시 중단, 다시 시작 및 백그라운드 이벤트를 트리거하는 방법