在 Visual Studio 中设置通过 USB 2.0 线缆进行的内核模式调试

重要

此功能在 WDK Windows 10版本 1507 及更高版本中不可用。

可以使用Microsoft Visual Studio通过 USB 2.0 电缆设置和执行内核模式调试。 若要使用Visual Studio进行内核模式调试,必须将Windows驱动程序工具包 (WDK) 与Visual Studio集成。 有关如何安装集成环境的信息,请参阅使用 Visual Studio 调试

作为使用Visual Studio设置 USB 2.0 调试的替代方法,可以手动执行设置。 有关详细信息,请参阅 手动通过 USB 2.0 电缆设置Kernel-Mode调试

运行调试器的计算机称为 主计算机,正在调试的计算机称为 目标计算机

通过 USB 2.0 连接进行调试需要以下硬件:

  • 通用串行总线 (USB) 2.0 调试电缆。 此电缆不是标准 USB 2.0 电缆,因为它具有额外的硬件组件,使其与 USB2 调试设备功能规范兼容。 可以通过对“USB 2.0 调试电缆”进行 Internet 搜索来找到这些电缆。

  • 在主计算机上,EHCI (USB 2.0) 主机控制器

  • 在目标计算机上,支持调试的 EHCI (USB 2.0) 主机控制器

标识目标计算机上的调试端口

  1. 在目标计算机上,启动 UsbView 工具。 UsbView 工具包含在用于Windows的调试工具中。

  2. 在 UsbView 中,找到与 EHCI 规范兼容的所有主机控制器。 例如,你可以查找列为“增强”的控制器。

  3. 在 UsbView 中,展开 EHCI 主机控制器的节点。 查找主机控制器支持调试的指示,并查找调试端口的数量。 例如,UsbView 为支持在端口 1 上进行调试的 EHCI 主机控制器显示此输出。

    Xxx xxx xxx USB2 Enhanced Host Controller - 293A
    ...
    Debug Port Number:  1
    Bus.Device.Function (in decimal): 0.29.7
    

    注意 许多 EHCI 主机控制器支持在端口 1 上进行调试,但某些 EHCI 主机控制器支持在端口 2 上进行调试。

  4. 记下要用于调试的 EHCI 控制器的总线、设备和函数号。 UsbView 显示这些数字。 在前面的示例中,总线号为 0,设备编号为 29,函数号为 7。

  5. 确定 EHCI 控制器和支持调试的端口号后,下一步是找到与正确端口号关联的物理 USB 连接器。 若要查找物理连接器,请将任何 USB 2.0 设备插入目标计算机上的任何 USB 连接器。 刷新 UsbView 以查看设备所在的位置。 如果 UsbView 显示设备已连接到标识为调试端口的 EHCI 主机控制器和端口,则已找到可用于调试的物理 USB 连接器。 可能是没有与 EHCI 控制器上的调试端口关联的外部物理 USB 连接器。 在这种情况下,可以在计算机中查找物理 USB 连接器。 执行相同的步骤以确定内部 USB 连接器是否适合内核调试。 如果找不到与调试端口关联的外部或内部) 的物理 USB (连接器,则不能将计算机用作通过 USB 2.0 电缆进行调试的目标。

    注意 有关异常,请参阅 此备注

连接 USB 调试电缆

  1. 验证主机是否未配置为 USB 调试的目标。 (如有必要,请以管理员身份打开命令提示符窗口,输入 bcdedit /debug off,然后重新启动.)
  2. 在主计算机上,使用 UsbView 查找支持调试的 EHCI 主机控制器和端口。 如果可能,请将 USB 2.0 调试电缆的一端插入主机计算机上的 EHCI 端口 (,) 不支持调试。 否则,请将电缆插入主计算机上的任何 EHCI 端口。
  3. 将 USB 2.0 调试电缆的另一端插入你之前在目标计算机上识别的连接器。

配置主机和目标计算机

  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,其中 bdf 是用于在目标计算机上调试的 USB 主机控制器的总线、设备和函数号。 总线、设备和函数编号必须采用十进制格式 (示例:0.29.7) 。 这些值显示在 USB 主机控制器的“常规”选项卡上的“位置”下设备管理器。

  4. 配置过程需要几分钟时间,并且可能会自动重新启动目标计算机一次或两次。 完成该过程后,单击“ 完成”。

验证目标计算机上的 dbgsettings

在目标计算机上,以管理员身份打开命令提示符窗口,并输入以下命令:

bcdedit /dbgsettings

bcdedit /enum

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

验证 debugtype 是否为 USB,并且 targetname 是主机计算机上Visual Studio中指定的名称。 可以忽略 debugportbaudrate 的值;它们不适用于通过 USB 进行调试。

验证 busparams 是否与指定的总线参数匹配。

如果看不到为 总线参数输入的值,请输入以下命令:

bcdedit /set “{dbgsettings}” busparamsb.d.F

其中 bdf 是你选择用于调试的目标计算机上的 EHCI 控制器的总线、设备和函数号。

示例:

bcdedit /set “{dbgsettings}” busparams 0.29.7

重新启动目标计算机。

首次启动调试会话

  1. 连接 USB 2.0 调试电缆到你选择用于在主机和目标计算机上调试的 USB 2.0 端口。
  2. 在主计算机上,以管理员身份打开Visual Studio。
  3. “工具” 菜单上,选择“ 附加到进程”。
  4. 对于传输,请选择Windows内核模式调试器
  5. 对于 限定符,请选择之前配置的目标计算机的名称。
  6. 单击 “附加”

此时,USB 调试驱动程序安装在主计算机上。 这就是为什么必须以管理员身份运行Visual Studio。 安装 USB 调试驱动程序后,无需以管理员身份运行后续调试会话。

启动调试会话

  1. 在主计算机上,在Visual Studio的“工具”菜单上,选择“附加到进程”。
  2. 对于传输,请选择Windows内核模式调试器
  3. 对于 限定符,请选择在配置过程中输入的目标名称。
  4. 单击 “附加”

在 Visual Studio 中设置内核模式调试