Windows的调试工具支持通过USB 2.0电缆进行内核调试。本文介绍如何手动设置USB 2.0调试。通过USB 2.0电缆进行调试需要以下硬件:
- USB 2.0调试电缆。此电缆不是标准USB 2.0电缆,因为它有一个额外的硬件组件,使其与USB2调试设备功能规范兼容。您可以在Internet上搜索“USB 2.0调试电缆”一词来找到这些电缆。
- 在主机上,有一个ehci(usb 2.0)主机控制器
- 在目标计算机上,支持调试的ehci(usb 2.0)主机控制器。
设置目标计算机
1、在目标计算机上,启动usbview工具。usbview工具包含在Windows调试工具中。
2、在usbview中,找到所有与ehci规范兼容的主机控制器。例如,您可以查找列出为增强的控制器。
3、在usbview中,展开ehci主机控制器的节点。查找主机控制器支持调试的指示,并查找调试端口的编号。例如,usbview为支持端口1上调试的ehci主机控制器显示此输出。
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电缆进行调试的目标。
6、在目标计算机上,以管理员身份打开命令提示窗口,然后输入以下命令:
bcdedit /debug on bcdedit /dbgsettings usb targetname:TargetName
其中target name是为目标计算机创建的名称。请注意,target name不必是目标计算机的正式名称;只要满足这些限制,它可以是您创建的任何字符串:
- 字符串的最大长度为24个字符。
- 字符串中唯一的字符是连字符(-)、下划线(u)、数字0到9以及字母A到Z(大写或小写)。
7、如果目标计算机上有多个USB主机控制器,请输入以下命令:
- Windows 7或更高版本
bcdedit /set "{dbgsettings}" busparams b.d.f
其中b、d和f是主机控制器的总线、设备和功能编号。总线、设备和功能编号必须为十进制格式(例如,BusParams 0.29.7)。 - Windows Vista
bcdedit /set "{current}" loadoptions busparams=f.d.f
其中b、d和f是主机控制器的总线、设备和功能编号。总线、设备和函数号必须是十六进制格式(例如,BusParams=0.1d.7)。
8、重启计算机
设置主机
1、验证主机没有配置为USB调试的目标。(如有必要,以管理员身份打开命令提示窗口,输入bcdedit/debug off,然后重新启动。)
2、在主机上,使用usbview查找支持调试的ehci主机控制器和端口。如果可能,将USB 2.0调试电缆的一端插入不支持调试的ehci端口(在主机上)。否则,请将电缆插入主机上的任何ehci端口。
3、将USB 2.0调试电缆的另一端插入目标计算机上先前标识的连接器。
首次启动调试会话
1、确定主机运行窗口的比特(32比特或64比特)
2、在主机上,打开与主机上运行的Windows的位匹配的windbg版本(以管理员身份)。例如,如果主机运行的是64位版本的Windows,请以管理员身份打开64位版本的windbg。
3、在“文件”菜单上,选择“内核调试”。在“内核调试”对话框中,打开“USB”选项卡。输入设置目标计算机时创建的目标名称。单击“确定”。
启动调试会话
windbg /k usb:targetname=TargetName
如果usbview显示支持调试的端口,但不显示映射到任何物理连接器的端口,该怎么办?
在某些计算机上,usbview显示可调试的端口,但不显示映射到任何物理USB连接器的端口。例如,usbview可能会将端口2显示为ehci控制器的调试端口号。
另外,当使用usbview查看单个端口时,它被列为支持调试。
在这种情况下,您可能仍然能够通过USB2.0电缆建立内核模式调试。在这里给出的示例中,您可以将USB 2.0调试电缆插入显示映射到XHCI控制器端口2的连接器。然后将总线参数设置为ehci控制器的总线、设备和功能编号(在本例中为0.29.0)。
bcdedit /set "{dbgsettings}" busparams 0.29.0