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의 디버깅 도구에 포함 되어 있습니다.

사용자 모드에서 프로세스 서버를 실행 하려면

  1. Windows 10 SDK 디버깅 도구 폴더 (예: C:\Program files (x86) \ Windows Kits\10.0\Debuggers\x64)에서 Windows PE 컴퓨터로 Windows 디버깅 프로세스 서버 도구: dbgsrv.exe를 복사 합니다.

  2. Windows PE 명령 프롬프트에서 방화벽을 사용 하지 않도록 설정 합니다.

    wpeutil disablefirewall
    
  3. Windows 디버깅 프로세스 서버를 시작 하 고, 컴퓨터에 대 한 연결 방법 (예: TCP 포트)을 지정 합니다.

    dbgsrv.exe -t tcp:port=1234
    

    자세한 내용은 프로세스 서버 활성화 (Windows 디버거)를 참조 하세요.

  4. 원격 컴퓨터에서 프로세스 서버를 사용 하 여 Windows PE 대상 컴퓨터에서 프로세스에 연결 하거나 프로세스를 시작 합니다.

    windbg -premote tcp:server=Server,port=1234
    

    자세한 내용은 스마트 클라이언트 활성화 (Windows 디버거)를 참조 하세요.

Windows PE 컴퓨터에서 직접 디버거를 실행할 수도 있습니다. 그러나 이렇게 하려면 Windows PE 컴퓨터를 다시 부팅할 때마다 기호 및 원본 경로를 설정 해야 합니다. 이 절차에 설명 된 대로 Windows의 전체 버전을 실행 하는 컴퓨터에서 디버깅을 수행 하는 것이 좋습니다.

다음 디버깅 절차는 startnet 또는 setup.exe를 무시 하 고 디버깅을 위해 명령 프롬프트로 직접 이동 하려는 경우에 유용 합니다. 이 프로시저는 설치를 비롯 한 모든 초기화를 무시 하 고 Wpeinit.exe 같은 명령을 실행 하지 않습니다. 온라인 운영 체제에서 온라인으로이 절차를 수행 해야 합니다.

초기화 전에 사용자 모드 디버깅을 사용 하도록 설정 하려면

  1. winpeshl.ini 파일 (있는 경우)을 삭제 합니다. winpeshl.ini 파일이 없으면 기본적으로 사용자 모드 디버깅에 액세스할 수 있습니다.

  2. 명령 프롬프트가 표시 되기 전에 부팅 하는 동안 Ctrl 키를 누르고 있습니다. 명령 프롬프트가 나타납니다.

  3. 디버깅을 진행 합니다.

커널 모드 디버깅

커널 모드에서 디버그 하려면 시스템이 부팅 되기 전에 커널 모드 디버깅을 사용 하도록 설정 해야 합니다. 부팅 구성 파일에는 커널 모드 디버깅 설정이 있습니다 .이 설정은 bcdedit.exe 명령줄 도구를 사용 하 여 부팅 구성 데이터 (BCD) 저장소를 수정 하는 데 사용 됩니다. 커널 디버깅은 bcdedit.exe를 사용 해야만 수행할 수 있습니다. Bcdedit.exe은 Windows 파티션의 \ Windows \system32 디렉터리에 있습니다.

기본 디버거 설정은 다음과 같습니다.

identifier              {dbgsettings} 
debugtype               Serial 
debugport               1 
baudrate                115200

VM 환경에 대해 Iso를 만들려면 ISO를 만들기 전에 BCD 항목으로 커널을 사용 하도록 설정 합니다.

기본 BCD 저장소를 수정 하는 방법에 대 한 자세한 내용은 Bcdedit를 사용 하 여 Bcd 저장소를 수정하는 방법을 참조 하세요.

커널 모드 디버깅을 사용 하도록 설정 하려면

  1. Bcd라는 파일에 포함 된 bcd 저장소를 찾습니다. 이 파일은 Windows PE 이미지를 포함 하는 미디어의 루트에 있는 부팅 디렉터리에 있습니다.

  2. 명령 프롬프트에서 다음 bcdedit 명령을 입력 하 여 이미지를 부팅 하는 데 사용 되는 BCD 저장소의 디버그 플래그를 설정 합니다 debug on .

    bcdedit /store <path to winpe>/boot/bcd /set {default} debug on
    

    {default}Windows PE에 대 한 boot 옵션의 UID (고유 식별자)로 바꾸어야 할 수 있습니다.

    또는 부팅 하는 동안 F8 키를 누르고 디버그 옵션을 선택 하 여 커널 디버깅을 사용 하도록 설정할 수도 있습니다.

    참고 Windows PE 내에서 기호 서버를 사용 하려면 서버 ’ 기호 및 파일 공유에서 명령을 사용 합니다.

디버깅을 제어 하는 명령줄 옵션에 대 한 자세한 내용은 BCDEdit Command-Line options를 참조 하세요.

네트워크 커널 모드 디버깅을 사용 하도록 설정 하려면

기술자 PC에서 다음 명령을 실행 하 여 네트워크 커널 모드 디버깅 설정을 사용 하 여 Windows PE 이미지를 만듭니다.

  1. 관리자로 배포 및 이미지 도구 환경을 시작합니다.

  2. copype를 실행 하 여 Windows PE 파일의 작업 복사본을 만듭니다.

    copype amd64 d:\WinPE_amd64
    
  3. 대상 PC가 UEFI 시스템 인 경우 다음 명령을 실행 합니다. 예를 들어 다음 포트와 키가 있습니다. 포트를 5만에서 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
    
  4. 대상 PC가 레거시 BIOS 시스템 인 경우 다음 명령을 실행 합니다. 예를 들어 다음 포트와 키가 있습니다. 포트를 5만에서 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
    
  5. MakeWinPEMedia를/siso 옵션과 함께 사용 하 여 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

Windows 10 용 WinPE

WinPE: 탑재 및 사용자 지정

Wpeutil Command-Line 옵션

Winpeshl.ini 참조: WinPE 시작 시 앱 시작

BCDEdit Command-Line 옵션