WinPE: 디버그 앱
Ntsd.exe, Cdb.exe 및 Windbg.exe와 같은 Windows 디버거와 지원 도구를 사용하여 Windows PE에서 애플리케이션을 디버그하고 Windows PE 커널을 디버그할 수 있습니다. 디버깅 도구는 Windows 10 SDK에 포함되어 있습니다. 디버깅 도구를 로컬로 복사하거나 공유에서 사용하여 Windows PE 컴퓨터에서 사용할 수 있도록 해야 합니다.
Windows PE를 원격으로 디버그하려면 PC에서 기본 제공 방화벽을 꺼야 할 수 있습니다.
wpeutil disablefirewall
사용자 모드 디버깅
가장 쉬운 사용자 모드 디버깅 방법은 Windows PE 컴퓨터에서 프로세스 서버를 실행하고 다른 컴퓨터에서 디버거를 사용하여 연결하는 것입니다. 프로세스 서버는 Windows 10 SDK의 디버깅 도구에 포함되어 있습니다.
사용자 모드에서 프로세스 서버를 실행하려면
Windows 디버깅 Process Server 도구(dbgsrv.exe)를 Windows 10 SDK 디버깅 도구 폴더(예: example: C:\Program Files (x86)\Windows Kits\10.0\Debuggers\x64)에서 Windows PE 컴퓨터로 복사합니다.
Windows PE 명령 프롬프트에서 방화벽을 사용하지 않도록 설정합니다.
wpeutil disablefirewall
PC에 대한 연결 방법(예: TCP 포트)을 지정하여 Windows 디버깅 처리 서버를 시작합니다.
dbgsrv.exe -t tcp:port=1234
자세한 내용은 처리 서버 활성화(Windows 디버거)를 참조하세요.
원격 컴퓨터에서 프로세스 서버를 사용하여 Windows PE 대상 컴퓨터에 연결하거나 프로세스를 시작합니다.
windbg -premote tcp:server=Server,port=1234
자세한 내용은 스마트 클라이언트 활성화(Windows 디버거)를 참조하세요.
Windows PE 컴퓨터에서 직접 디버거를 실행할 수도 있습니다. 그러나 이렇게 하려면 Windows PE 컴퓨터를 다시 부팅할 때마다 기호 및 원본 경로를 설정해야 합니다. 이 절차에 설명된 대로 Windows 정식 버전을 실행하는 컴퓨터에서 디버깅을 수행하는 것이 좋습니다.
다음 디버깅 절차는 startnet.cmd 또는 setup.exe를 무시하고 디버깅 목적으로 명령 프롬프트로 직접 진행하려는 경우에 유용합니다. 이 절차는 설정을 포함한 모든 초기화를 무시하고 Wpeinit.exe와 같은 명령을 실행하지 않습니다. 이 절차는 온라인 운영 체제에서 온라인으로 수행해야 합니다.
초기화 전에 사용자 모드 디버깅을 사용하도록 설정하려면
winpeshl.ini 파일이 있으면 삭제합니다. winpeshl.ini 파일이 없으면 기본적으로 사용자 모드 디버깅에 액세스할 수 있습니다.
명령 프롬프트가 표시되기 전에 부팅하는 동안 Ctrl 키를 누르고 있습니다. 명령 프롬프트가 나타납니다.
디버깅을 진행합니다.
커널 모드 디버깅
커널 모드에서 디버그하려면 시스템이 부팅되기 전에 커널 모드 디버깅을 사용하도록 설정해야 합니다. 부팅 구성 파일에는 bcdedit.exe 명령줄 도구를 사용하여 BCD(부팅 구성 데이터) 저장소를 편집하면 사용하도록 설정되는 커널 모드 디버깅 설정이 있습니다. 커널 디버깅은 bcdedit.exe를 통해서만 수행할 수 있습니다. Bcdedit.exe는 Windows 파티션의 \Windows\System32 디렉터리에 있습니다.
기본 디버거 설정은 다음과 같습니다.
identifier {dbgsettings}
debugtype Serial
debugport 1
baudrate 115200
VM 환경용 ISO를 만들려면 ISO를 만들기 전에 BCD 항목으로 커널을 사용하도록 설정합니다.
기본 BCD 저장소(default.bcd)를 편집하는 방법에 대한 자세한 내용은 Bcdedit를 사용하여 BCD 저장소를 편집하는 방법을 참조하세요.
커널 모드 디버깅을 사용하도록 설정하려면
bcd라는 파일에 포함된 BCD 저장소를 찾습니다. 이 파일은 Windows PE 이미지가 포함된 미디어 루트의 부팅 디렉터리에 있습니다.
명령 프롬프트에서 다음 bcdedit 명령을 입력하여 이미지를 부팅하는 데 사용되는 BCD 저장소의 디버그 플래그를
debug on
으로 설정합니다.bcdedit /store <path to winpe>/boot/bcd /set {default} debug on
{default}
는 Windows PE용 부팅 옵션의 고유 식별자(UID)로 바꿔야 할 수 있습니다.또는 부팅하는 동안 F8 키를 누르고 디버그 옵션을 선택하여 커널 디버깅을 사용하도록 설정할 수도 있습니다.
참고 Windows PE 내에서 기호 서버를 사용하려면 서버 기호 및 파일 공유에서
net use
명령을 사용합니다.
디버깅을 제어하는 명령줄 옵션에 대한 자세한 내용은 BCDEdit 명령줄 옵션을 참조하세요.
네트워크 커널 모드 디버깅을 사용하도록 설정하려면
기술자 PC에서 다음 명령을 실행하여 네트워크 커널 모드 디버깅 설정으로 Windows PE 이미지를 만듭니다.
관리자로 배포 및 이미지 도구 환경을 시작합니다.
copype를 실행하여 Windows PE 파일의 작업 복사본을 만듭니다.
copype amd64 d:\WinPE_amd64
대상 PC가 UEFI 시스템인 경우 다음 명령을 실행합니다. (다음 PORT 및 키는 예입니다. PORT는 50000부터 50039까지 설정할 수 있습니다. 키는 암호화 키 참조하세요.)
bcdedit /store d:\WinPE_amd64\media\EFI\Microsoft\Boot\BCD /set {default} debug on bcdedit /store d:\WinPE_amd64\media\EFI\Microsoft\Boot\BCD /set {default} bootdebug on bcdedit /store d:\WinPE_amd64\media\EFI\Microsoft\Boot\BCD /dbgsettings NET HOSTIP:xxx.xxx.xxx.xxx PORT:50005 key:5.5.5.5
대상 PC가 레거시 BIOS 시스템인 경우 다음 명령을 실행합니다(다음 PORT 및 키는 예입니다. PORT는 50000부터 50039까지 설정할 수 있습니다. 키는 암호화 키 참조).
bcdedit /store d:\WinPE_amd64\media\Boot\BCD /set {default} debug on bcdedit /store d:\WinPE_amd64\media\Boot\BCD /set {default} bootdebug on bcdedit /store d:\WinPE_amd64\media\Boot\BCD /dbgsettings NET HOSTIP:xxx.xxx.xxx.xxx PORT:50005 key:5.5.5.5
MakeWinPEMedia를 /ISO 옵션과 함께 사용하여 Windows PE 파일이 포함된 ISO 파일을 만들고 다음 명령을 실행합니다.
makewinpemedia /iso d:\WinPE_amd64\winpe_x64_debug.iso
대상 PC에서 winpe_x64_debug.iso로 시작하고 다음 명령을 실행합니다.
windbg.exe -k net:port=50005,key=5.5.5.5