USB 3.0 케이블을 통해 커널 모드 디버깅 설정

Windows용 디버깅 도구는 USB 3.0 케이블을 통해 커널 모드 디버깅을 지원합니다. 이 문서에서는 USB 3.0 디버깅을 수동으로 설정하는 방법을 설명합니다.

디버거를 실행하는 컴퓨터를 호스트 컴퓨터라고 하며 디버그 중인 컴퓨터를 대상 컴퓨터라고 합니다.

USB 3.0 케이블을 디버깅하려면 다음 하드웨어가 필요합니다.

  • USB 3.0 디버그 케이블- 두 개의 남성 유형 A 플러그와 Vbus 연결이 없는 A-A 크로스오버 케이블입니다.
  • 호스트 컴퓨터에서 xHCI(USB 3.0) 호스트 컨트롤러
  • 대상 컴퓨터에서 디버깅을 지원하는 xHCI(USB 3.0) 호스트 컨트롤러

문제 해결을 간소화하려면 허브 또는 도킹 스테이션을 피하면서 대상 컴퓨터와 호스트 컴퓨터 간에 직접 케이블을 연결합니다.

대상 컴퓨터 설정

  1. 대상 컴퓨터에서 UsbView 도구를 시작합니다. UsbView 도구는 Windows용 디버깅 도구에 포함되어 있습니다.

  2. UsbView에서 모든 xHCI 호스트 컨트롤러를 찾습니다.

  3. UsbView에서 xHCI 호스트 컨트롤러의 노드를 확장합니다. 호스트 컨트롤러의 포트가 디버깅을 지원한다는 표시를 찾습니다.

    [Port1]
    
    Is Port User Connectable:         yes
    Is Port Debug Capable:            yes
    Companion Port Number:            3
    Companion Hub Symbolic Link Name: USB#ROOT_HUB30#5&32bab638&0&0#{...}
    Protocols Supported:
     USB 1.1:                         no
     USB 2.0:                         no
     USB 3.0:                         yes
    
  4. 디버깅에 사용하려는 xHCI 컨트롤러의 버스, 디바이스 및 함수 번호를 기록해 둡니다. UsbView는 이러한 숫자를 표시합니다. 다음 예제에서 버스 번호는 48, 디바이스 번호는 0, 함수 번호는 0입니다.

    USB xHCI Compliant Host Controller
    ...
    DriverKey: {36fc9e60-c465-11cf-8056-444553540000}\0020
    ...
    Bus.Device.Function (in decimal): 48.0.0
    
  5. 디버깅을 지원하는 xHCI 컨트롤러를 식별한 후 다음 단계는 xHCI 컨트롤러의 포트와 연결된 실제 USB 커넥터를 찾는 것입니다. 물리적 커넥터를 찾으려면 USB 3.0 디바이스를 대상 컴퓨터의 USB 커넥터에 연결합니다. UsbView를 새로 고쳐 장치가 있는 위치를 확인합니다. UsbView가 선택한 xHCI 호스트 컨트롤러에 연결된 디바이스를 표시하는 경우 USB 3.0 디버깅에 사용할 수 있는 실제 USB 커넥터를 찾았습니다.

중요

를 사용하여 bcdedit 부팅 정보를 변경하기 전에 테스트 PC에서 BitLocker 및 보안 부팅과 같은 Windows 보안 기능을 일시적으로 일시 중단해야 할 수 있습니다. 테스트가 완료되면 이러한 보안 기능을 다시 사용하도록 설정하고 보안 기능이 비활성화된 경우 테스트 PC를 적절하게 관리합니다.

  1. 대상 컴퓨터에서 관리자 권한으로 명령 프롬프트 창을 열고 다음 명령을 입력합니다.

    bcdedit /debug on
    bcdedit /dbgsettings usb targetname:<TargetName>
    

    TargetName 은 대상 컴퓨터에 대해 만드는 이름입니다. TargetName은 대상 컴퓨터의 공식 이름이 될 필요는 없습니다. 이러한 제한 사항을 충족하는 한 만드는 모든 문자열일 수 있습니다.

    • 문자열은 대/소문자를 조합하여 TargetName 의 아무 곳이나 "디버그"를 포함해서는 안 됩니다. 예를 들어 대상 이름에서 "DeBuG" 또는 "DEBUG"를 사용하는 경우 디버깅이 제대로 작동하지 않습니다.
    • 문자열의 유일한 문자는 하이픈(-), 밑줄(_), 숫자 0~9, 문자 A~Z(대문자 또는 소문자)입니다.
    • 문자열의 최대 길이는 24자입니다.
  2. 장치 관리자 디버깅에 사용할 USB 컨트롤러를 찾습니다. 일반 탭의 위치 아래에 버스, 디바이스 및 함수 번호가 표시됩니다. 다음 명령을 입력합니다.

    bcdedit /set "{dbgsettings}" busparams <b.d.f>
    

    B, df 는 USB 호스트 컨트롤러의 버스, 디바이스 및 함수 번호입니다. 버스, 디바이스 및 기능 번호는 10진수 형식이어야 합니다.

    예제:

    bcdedit /set "{dbgsettings}" busparams 48.0.0
    
  3. 대상 컴퓨터를 다시 부팅합니다.

전원 관리 사용 안 함

경우에 따라 전원 전환이 USB 3.0을 통해 디버깅을 방해할 수 있습니다. 이러한 문제를 방지하려면 디버깅에 사용하는 xHCI 호스트 컨트롤러 및 해당 루트 허브에 대해 선택적 일시 중단을 사용하지 않도록 설정합니다.

  1. 장치 관리자 xHCI 호스트 컨트롤러의 노드로 이동합니다. 노드를 마우스 오른쪽 단추로 클릭하고 속성을 선택합니다. 전원 관리 탭이 있는 경우 탭을 열고 컴퓨터에서 전원을 절약하기 위해 이 디바이스를 끄도록 허용 확인란의 선택을 취소합니다.

  2. 장치 관리자 xHCI 호스트 컨트롤러의 루트 허브에 대한 노드로 이동합니다. 노드를 마우스 오른쪽 단추로 클릭하고 속성을 선택합니다. 전원 관리 탭이 있는 경우 탭을 열고 컴퓨터에서 전원 검사 절약하기 위해 이 장치를 끄도록 허용 상자의 선택을 취소합니다.

디버깅에 xHCI 호스트 컨트롤러 사용을 마치면 xHCI 호스트 컨트롤러에 대해 선택적 일시 중단을 다시 사용하도록 설정합니다.

처음으로 디버깅 세션 시작

  1. 호스트 및 대상 컴퓨터에서 디버깅을 위해 선택한 USB 3.0 포트에 USB 3.0 디버그 케이블을 연결합니다.
  2. 호스트 컴퓨터에서 실행되는 Windows의 비트 수(32비트 또는 64비트)를 결정합니다.
  3. 호스트 컴퓨터에서 호스트 컴퓨터에서 실행되는 Windows의 비트와 일치하는 WinDbg(관리자 권한) 버전을 엽니다. 예를 들어 호스트 컴퓨터에서 64비트 버전의 Windows를 실행하는 경우 64비트 버전의 WinDbg를 관리자 권한으로 엽니다.
  4. 파일 메뉴에서 커널 디버그를 선택합니다. 커널 디버깅 대화 상자에서 USB 탭을 엽니다. 대상 컴퓨터를 설정할 때 만든 대상 이름을 입력합니다. 확인을 클릭합니다.

이 시점에서 USB 디버그 드라이버가 호스트 컴퓨터에 설치되므로 WinDbg의 비트와 Windows의 비트 수를 일치시키는 것이 중요합니다. USB 디버그 드라이버가 설치되면 후속 디버깅 세션에 32비트 또는 64비트 버전의 WinDbg를 사용할 수 있습니다.

디버깅 세션 시작

WinDbg 사용

호스트 컴퓨터에서 WinDbg를 엽니다. 파일 메뉴에서 커널 디버그를 선택합니다. 커널 디버깅 대화 상자에서 USB 탭을 엽니다. 대상 컴퓨터를 설정할 때 만든 대상 이름을 입력합니다. 확인을 선택합니다.

명령 프롬프트 창에서 다음 명령을 입력하여 WinDbg로 세션을 시작할 수도 있습니다. 여기서 TargetName 은 대상 컴퓨터를 설정할 때 만든 대상 이름입니다.

windbg /k usb:targetname=<TargetName>

KD 사용

호스트 컴퓨터에서 명령 프롬프트 창을 열고 다음 명령을 입력합니다. 여기서 TargetName 은 대상 컴퓨터를 설정할 때 만든 대상 이름입니다.

kd /k usb:targetname=<TargetName>

대상 컴퓨터 다시 부팅

디버거가 연결되면 대상 컴퓨터를 다시 부팅합니다. PC를 다시 부팅하는 한 가지 방법은 관리자의 명령 프롬프트에서 명령을 사용하는 shutdown -r -t 0 것입니다.

대상 PC가 다시 시작되면 디버거가 자동으로 연결됩니다.

문제 해결

USB 디바이스가 인식되지 않음

디버그 케이블을 삽입할 때 텍스트 USB 디바이스가 인식되지 않는 Windows 알림이 호스트에 표시되는 경우 알려진 USB 3.1~3.1 호환성 문제가 발생할 수 있습니다. 이 문제는 디버그 케이블이 호스트의 USB 3.1 컨트롤러와 대상의 Intel(Ice Lake 또는 Tiger Lake) 3.1 USB 컨트롤러에 연결된 경우 디버그 구성에 영향을 줍니다.

자세한 내용 및 프로세서 모델 목록은 Ice Lake(마이크로프로세서)Tiger Lake(마이크로프로세서)를 참조하세요. 대상 컴퓨터의 프로세서 모델을 찾으려면 설정 앱을 열고 시스템 , 정보로 차례로 이동합니다. 프로세서디바이스 사양 아래에 나열됩니다.

이 문제를 확인하려면 장치 관리자 열고 유니버설 직렬 버스 컨트롤러에서 USB 디버그 연결 디바이스를 찾습니다. 이 디바이스를 찾을 수 없는 경우 다른 디바이스에서 알 수 없는 디바이스에 대한 검사. 디바이스를 마우스 오른쪽 단추로 클릭하여 해당 속성 페이지를 엽니다. 디바이스 상태 텍스트 상자에 문제가 보고되었기 때문에 Windows에서 이 디바이스를 중지했습니다(코드 43). USB 디바이스에서 잘못된 USB BOS 설명자가 반환되었습니다.

이 문제를 해결하려면 관리자 명령 프롬프트에서 다음 명령을 실행하여 레지스트리를 변경합니다.

reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\usbflags\349500E00000 /v SkipBOSDescriptorQuery /t REG_DWORD /d 1 /f
reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\usbflags\045E06560000 /v SkipBOSDescriptorQuery /t REG_DWORD /d 1 /f

그런 다음 디버그 케이블을 제거하고 다시 삽입합니다.

추가 정보

수동으로 커널 모드 디버깅 설정