Visual Studio USB 3.0 케이블을 통해 Kernel-Mode 디버깅 설정

중요

이 기능은 WDK의 Windows 10 버전 1507 이상에서는 사용할 수 없습니다.

Microsoft Visual Studio 사용하여 USB 3.0 케이블을 통해 커널 모드 디버깅을 설정하고 수행할 수 있습니다. 커널 모드 디버깅에 Visual Studio 사용하려면 Visual Studio 통합된 Windows 드라이버 키트(WDK)가 있어야 합니다. 통합 환경을 설치하는 방법에 대한 자세한 내용은 Visual Studio 사용하여 디버깅을 참조하세요.

Visual Studio 사용하여 USB 3.0 디버깅을 설정하는 대신 수동으로 설정을 수행할 수 있습니다. 자세한 내용은 USB 3.0 케이블을 통해 수동으로 Kernel-Mode 디버깅 설정을 참조하세요.

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

USB 3.0 연결을 통해 디버깅하려면 다음 하드웨어가 필요합니다.

  • USB 3.0 디버그 케이블. USB 3.0 라인과 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 커넥터를 찾았습니다.

호스트 및 대상 컴퓨터 구성

  1. 드라이버 배포 및 테스트를 위한 컴퓨터 프로비전(WDK 8.1)에 설명된 대로 호스트 및 대상 컴퓨터 구성을 시작합니다.

  2. 호스트 컴퓨터의 Visual Studio 컴퓨터 구성 대화 상자로 이동한 후 컴퓨터 프로비저닝을 선택하고 디버거 설정을 선택합니다.

  3. 연결 형식의 경우 USB를 선택합니다.

    screen shot showing an example of debugger settings with values for the following fields: connection type, target name, and bus parameters.

    대상 이름에 대상 컴퓨터를 나타내는 문자열을 입력합니다. 이 문자열은 대상 컴퓨터의 공식 이름이 아니어야 합니다. 이러한 제한 사항을 충족하는 한 만드는 모든 문자열일 수 있습니다.

    • 문자열의 최대 길이는 24자입니다.
    • 문자열의 유일한 문자는 하이픈(-), 밑줄(_), 숫자 0~9, 문자 A~Z(대문자 또는 소문자)입니다.

    버스 매개 변수b를 입력합니다. d. f. 여기서 b, df는 대상 컴퓨터에서 디버깅에 사용하려는 USB 호스트 컨트롤러의 버스, 디바이스 및 함수 번호입니다. 버스, 디바이스 및 함수 번호는 10진수 형식이어야 합니다(예: 48.0.0). 이러한 값은 일반 탭의 위치 아래에 디바이스 관리자에 표시됩니다.

  4. 구성 프로세스는 몇 분 정도 걸리며 대상 컴퓨터를 한두 번 자동으로 다시 부팅할 수 있습니다. 프로세스가 완료되면 마침을 선택합니다.

대상 컴퓨터에서 dbgsettings 확인

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

bcdedit /dbgsettings

bcdedit /enum

...
targetname              MyUsbTarget
debugtype               USB
debugport               1
baudrate                115200
...
busparams               48.0.0

debugtype이 USB이고 대상 이름이 호스트 comptuer의 Visual Studio 지정한 이름인지 확인합니다. 디버그포트전송의 값을 무시할 수 있습니다. USB를 통해 디버깅하는 데는 적용되지 않습니다.

busparams가 지정한 버스 매개 변수와 일치하는지 확인합니다.

버스 매개 변수에 대해 입력한 값이 표시되지 않으면 다음 명령을 입력합니다.

bcdedit /set "{dbgsettings}" busparamsb.d.F

여기서 b, df 는 디버깅에 사용하도록 선택한 대상 컴퓨터에서 xHCI 컨트롤러의 버스, 디바이스 및 함수 번호입니다.

예제:

bcdedit /set "{dbgsettings}" busparams 48.0.0

대상 컴퓨터를 다시 부팅합니다.

처음으로 디버깅 세션 시작

  1. 호스트 및 대상 컴퓨터에서 디버깅하도록 선택한 USB 3.0 포트에 USB(유니버설 직렬 버스) 3.0 디버그 케이블을 커넥트.
  2. 호스트 컴퓨터에서 관리자 권한으로 Visual Studio 엽니다.
  3. [도구] 메뉴에서 [프로세스에 연결]을 선택합니다.
  4. 전송의 경우 커널 모드 디버거를 Windows 선택합니다.
  5. 한정자의 경우 이전에 구성한 대상 컴퓨터의 이름을 선택합니다.
  6. 연결을 선택합니다.

이때 USB 디버그 드라이버가 호스트 컴퓨터에 설치됩니다. 따라서 관리자 권한으로 Visual Studio 실행하는 것이 중요합니다. USB 디버그 드라이버가 설치된 후에는 후속 디버깅 세션에 대해 관리자 권한으로 실행할 필요가 없습니다.

디버깅 세션 시작

  1. 호스트 컴퓨터의 Visual Studio [도구] 메뉴에서 [프로세스에 연결]을 선택합니다.
  2. 전송의 경우 커널 모드 디버거를 Windows 선택합니다.
  3. 한정자의 경우 이전에 구성한 대상 컴퓨터의 이름을 선택합니다.
  4. 연결을 선택합니다.

USB 3.0을 통해 디버깅하기 위한 문제 해결 팁

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

  1. 디바이스 관리자에서 xHCI 호스트 컨트롤러의 노드로 이동합니다. 노드를 선택하고 길게 누르거나 마우스 오른쪽 단추로 클릭하고 속성을 선택합니다. 전원 관리 탭이 있는 경우 탭을 열고 컴퓨터에서 이 디바이스를 끄도록 허용 확인란의 선택을 취소합니다.
  2. 디바이스 관리자에서 xHCI 호스트 컨트롤러의 루트 허브에 대한 노드로 이동합니다. 노드를 선택하고 길게 누르거나 마우스 오른쪽 단추로 클릭하고 속성을 선택합니다. 전원 관리 탭이 있는 경우 탭을 열고 컴퓨터에서 이 디바이스를 끄도록 허용 확인란의 선택을 취소합니다.

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

Visual Studio Kernel-Mode 디버깅 설정