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主机控制器显示此输出。

许多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电缆进行调试的目标。

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”选项卡。输入设置目标计算机时创建的目标名称。单击“确定”。

此时,USB调试驱动程序将安装在主机上。这就是为什么重要的是要将windbg的位与窗口的位相匹配。安装USB调试驱动程序后,您可以使用32位或64位版本的windbg进行后续调试会话。USB 2调试电缆实际上是两条电缆,中间有一个拨号器。加密狗的方向很重要;一侧为设备供电,另一侧不供电。如果USB调试不起作用,请尝试交换加密狗的方向。也就是说,将两条电缆从加密狗上拔下,然后交换电缆连接到的侧面。

启动调试会话

在主机上,打开windbg。在“文件”菜单上,选择“内核调试”。在“内核调试”对话框中,打开“USB”选项卡。输入设置目标计算机时创建的目标名称。单击“确定”。还可以通过在命令提示窗口中输入以下命令来启动与windbg的会话,其中target name是设置目标计算机时创建的目标名称:
windbg /k usb:targetname=TargetName

如果usbview显示支持调试的端口,但不显示映射到任何物理连接器的端口,该怎么办?

在某些计算机上,usbview显示可调试的端口,但不显示映射到任何物理USB连接器的端口。例如,usbview可能会将端口2显示为ehci控制器的调试端口号。

另外,当使用usbview查看单个端口时,它被列为支持调试。

但是,当您将USB 2.0设备(如闪存驱动器)插入计算机上的所有USB接口时,usbview从不显示连接到可调试端口(本例中的端口2)的设备。当外部连接器映射到ehci控制器的可调试端口时,usbview可能会显示映射到xhci控制器端口的外部连接器。

在这种情况下,您可能仍然能够通过USB2.0电缆建立内核模式调试。在这里给出的示例中,您可以将USB 2.0调试电缆插入显示映射到XHCI控制器端口2的连接器。然后将总线参数设置为ehci控制器的总线、设备和功能编号(在本例中为0.29.0)。

bcdedit /set "{dbgsettings}" busparams 0.29.0

通过USB 2.0电缆手动设置内核模式调试的更多相关文章

  1. Windows内核开发-5-(2)-内核模式调试

    Windows内核开发-5-(2)-内核模式调试 普通用户模式的调试,采取的是给进程添加一个线程来挂起断点,作为一个调试器的线程在进程中使用.照这样来类推,对操作系统调试相当于添加一个进程来限制操作系 ...

  2. windbg 如何再内核模式调试用户空间的程序

    1:使用!process 0 0 获取用户空间的所有的进程的信息 !process 0 0 **** NT ACTIVE PROCESS DUMP ****    PROCESS 80a02a60   ...

  3. 使用WinDbg调试入门(内核模式)

    windbg是一个内核模式和用户模式调试器,包含在Windows调试工具中.这里我们提供了一些实践练习,可以帮助您开始使用windbg作为内核模式调试器. 设置内核模式调试 内核模式调试环境通常有两台 ...

  4. 电脑是如何识别USB 3.0 U盘的

    USB 3.0电缆如图1所示. 图1 USB 3.0的接口比USB 2.0接口多了5根线,这5根线分别是Shield.SSRX+/-和SSTX+/-,即是屏蔽地.超速发送差分对和接受差分对. 因此一个 ...

  5. USB 3.0规范中译本第9章 设备框架

    本文为CoryXie原创译文,转载及有任何问题请联系cory.xie#gmail.com. 设备框架可以被分成三层: 最底层是总线接口层,传送和接收包. 中间层处理在总线接口和设备的各种端点之间路由数 ...

  6. 内核用户模式调试支持(Dbgk)

    简介 将详细分析Windows调试的内核模式接口.希望读者对C和通用NT内核体系结构和语义有一些基本的了解.此外,这并不是介绍什么是调试或如何编写调试器.它可以作为经验丰富的调试器编写人员或好奇的安全 ...

  7. RK3288 手动设置电池电量

    参考:[RK3288][Android6.0] 调试笔记 --- 电池电量一直显示100% 系统版本:RK3288 android 5.1 (与参考的变量和宏有点区别) 设备没有电池,在进行Fota升 ...

  8. USB 3.0规范中译本 第6章 物理层

    本文为CoryXie原创译文,转载及有任何问题请联系cory.xie#gmail.com. 6.1 物理层概览 物理层定义超高速总线的信号技术.本章定义超高速物理层的电气要求. 本节定义超高速组件之间 ...

  9. USB 3.0规范中译本 第3章 USB 3.0体系结构概览

    本文为CoryXie原创译文,转载及有任何问题请联系cory.xie#gmail.com. 本章呈现USB 3.0体系结构和关键概念的概览.USB 3.0与前面版本的USB类似,因为它是线缆总线,支持 ...

随机推荐

  1. rancher部署kubernets集群

    docker的安装 先添加docker源 sudo apt update sudo apt install docker.io docker更换国内镜像 1.配置脚本如下: #!/bin/bashca ...

  2. 转!!通俗理解数字加密,数字签名,数字证书和https

    原博文地址:https://www.jianshu.com/p/4932cb1499bf 前言 最近在开发关于PDF合同文档电子签章的功能,大概意思就是在一份PDF合同上签名,盖章,使其具有法律效应. ...

  3. C#类型成员:方法

    一.方法 方法的基本结构:返回值 方法名(参数){ 内容 },其中无返回值时用void,有返回值时用返回值类型,参数可以是零到无限个,参数由参数类型和参数名组成. void Method1() { } ...

  4. 3. ABP .NETCore 添加企业微信第三方登录

    1.企业微信登录步骤 1.获取企业微信Token 官方文档:https://work.weixin.qq.com/api/doc#90000/90135/91039 2.通过Token 与前端传的Co ...

  5. 2019 魔域java面试笔试题 (含面试题解析)

      本人5年开发经验.18年年底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴.今日头条.魔域等公司offer,岗位是Java后端开发,因为发展原因最终选择去了魔域,入职一年时间了,也成为了面试官,之 ...

  6. 2019 同程旅游java面试笔试题 (含面试题解析)

      本人5年开发经验.18年年底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴.今日头条.同程等公司offer,岗位是Java后端开发,因为发展原因最终选择去了同程,入职一年时间了,之前面试了很多家公 ...

  7. [SDOI2008]仪仗队(欧拉函数)

    题目 [SDOI2008]仪仗队 解析 这个题,我也不知道他们的soltion是怎么写的这么长的. 我们发现我们一次看一条直线上的第一个点,也就是说,若两个点斜率\(k=\frac{y}{x}\)相同 ...

  8. OC中并发编程的相关API和面临的挑战

    OC中并发编程的相关API和面临的挑战(1) 小引 http://www.objc.io/站点主要以杂志的形式,深入挖掘在OC中的最佳编程实践和高级技术,每个月探讨一个主题,每个主题都会有几篇相关的文 ...

  9. 【DATAGUARD】物理dg配置客户端无缝切换 (八.2)--Fast-Start Failover 的配置

    [DATAGUARD]物理dg配置客户端无缝切换 (八.2)--Fast-Start Failover 的配置 一.1  BLOG文档结构图       一.2  前言部分   一.2.1  导读 各 ...

  10. 多线程之美6一CAS与自旋锁

    1.什么是CAS CAS 即 compare and swap 比较并交换, 涉及到三个参数,内存值V, 预期值A, 要更新为的值B, 拿着预期值A与内存值V比较,相等则符合预期,将内存值V更新为B, ...