Skip to content

配置Windbg KdCom

提示

如果你正在调试的设备引出了UART引脚,那么你可以使用这种方法在不占用一个USB口的情况下进行调试,但其速度较慢且不支持远程桌面

准备工具

  • 一块高通的开发板,或者一只工程机
  • 调试串口可以使用
  • 已经在待测设备上正确安装了Windows
  • 安装了Windbg Preview

设置BCD

  • 找到手机里面ESP分区内的/EFI/Microsoft/Boot/BCD (路径不区分大小写)
    • 你可以采用大容量模式挂载ESP分区获取BCD文件,也可以采用安卓/REC挂载的方式获取BCD
    • 以下举例安卓/REC挂载获取的方法,假定你的ESP分区的label是esp:
    bash
    # 在手机上以root权限执行:
    mkdir /dev/esp_mnt
    mount /dev/block/by-name/esp /dev/esp_mnt
    cp /dev/esp_mnt/EFI/Microsoft/Boot/BCD /sdcard
    powershell
    # 在电脑的终端中执行,请确保你已经安装adb并配置了环境变量
    adb pull /sdcard/BCD D:\
  • 在电脑上打开一个具有管理员权限的终端,并设置调试模式:
    powershell
    cd D:\
    bcdedit /store BCD /set "{default}" testsigning on
    bcdedit /store BCD /set "{default}" nointegritychecks on
    bcdedit /store BCD /set "{default}" debug on 
    bcdedit /store BCD /dbgsettings serial baudrate:115200 debugport:1
  • 将BCD复制到手机上的ESP分区中
    powershell
    # 在电脑的终端中执行,请确保你已经安装adb并配置了环境变量
    adb push BCD /sdcard
    # 在确认已经推到手机以后,删除D:\BCD
    del D:\BCD
    bash
    # 在手机上以root权限执行:
    cp /dev/esp_mnt/EFI/Microsoft/Boot/BCD /dev/esp_mnt/EFI/Microsoft/Boot/NMBCD
    cp /sdcard/BCD /dev/esp_mnt/EFI/Microsoft/Boot/DBGBCD
    cp /sdcard/BCD /dev/esp_mnt/EFI/Microsoft/Boot/BCD

Windbg KdCom配置

  • 将USB转TTL设备连接到电脑上,此时在设备管理器中的端口中可以看到端口号为COMXX.
  • 打开Windbg(新版),点击左上角文件
  • 点击Start Debugging下面的Attach to kernel
  • 点击右方窗口中的COM选项,
    • Baud Rate一栏中填入115200
    • Port一栏中填入你在设备管理器中看到的COMXX, XX是几就写几。
    • 其余默认即可
  • 点击下方的OK按钮, 此时Windbg应该会进入等待连接状态

待测机启动

  • 确保待测机器的DBG2表配置正确(一般本项目支持的平台都会正确配置,故无需担心)
  • 在待测机器上启动Windows, Windows 会等待大约几秒时间连接Windbg
  • 若Windbg的command窗口中打印出待测机的Windows内核版本信息,则Windbg kdcom此时成功连接。

后记

  • 如果在Windows启动的时候直接使用串口工具(例如PuTTY、SecureCRT之类)查看文字输出,那么会在控制台看见一些与kdcom相关的乱码字符。
  • 故如若Windbg无法连接内核且串口在Win启动时无输出乱码字符,因考虑kdcom配置是否有误。