Windows设备驱动调试环境搭建指南

在Windows操作系统中,调试设备驱动程序是一项复杂且重要的工作。传统的调试方法需要两台物理机器:一台作为调试器(debugger),另一台作为被调试对象(debugee)。这种设置不仅繁琐,而且效率低下。随着虚拟机技术的兴起,可以在单一的主机系统上搭建调试环境,从而简化了调试过程。本文将介绍如何使用WinDbg在Windows环境下搭建设备驱动调试环境。

WinDbg简介

WinDbg是由微软提供的免费调试工具,支持32位和64位平台。它提供了良好的图形界面,并拥有丰富的命令集,用于调试内核模式驱动程序。开发者甚至可以编写自己的自定义调试库,并将其与WinDbg一起使用。虽然WinDbg主要用于Windows内核模式调试,但它也可以用来调试用户模式应用程序。

调试环境的搭建

在开始之前,需要准备以下工具和资源:

  • WinDbg调试工具
  • 虚拟机软件(如VMware Workstation)
  • Windows操作系统的虚拟机镜像
  • 调试符号文件(.PDB文件)
  • 对应的二进制文件
  • 源代码

首先,确保已经下载并安装了适合系统的WinDbg版本。可以从微软官方网站免费下载。

虚拟机(debugee)上,需要添加一个串行端口,并进行以下设置:

  1. 选择“使用命名管道”选项。
  2. 定义一个合适的命名管道名称,或者使用默认提供的名称。
  3. 选择“此端是服务器”。
  4. 选择“另一端是应用程序”。
  5. 勾选“轮询时让出CPU”选项。

配置完成后,虚拟机的串行端口设置应该如下图所示:

<img src="vm-serial-port-setup.png" alt="虚拟机串行端口设置">

虚拟机操作系统(debugee)上,需要修改启动选项,以便在重启时进入调试模式。以下是修改启动选项的步骤:

bcdedit /copy {current} /d DebugEntry bcdedit /displayorder {current} {GUID of the copied entry: will be generated by the previous command}

这样,就在现有的启动顺序中创建了一个新的条目DebugEntry。接下来,修改调试设置:

bcdedit /set {GUID} debugport 1 bcdedit /set {GUID} debugtype serial bcdedit /set {GUID} baudrate 115200 bcdedit /debug {}

完成以上步骤后,应该有了一个新的启动顺序DebugEntry,这意味着可以在下次重启时启动OS的调试模式。

在主机系统上启动WinDbg调试器,并进行以下设置:

  1. 转到“文件”->“内核调试”选项,设置以下选项:
  2. 选择“COM”标签,因为正在为调试设置COM端口。
  3. 将端口名称设置为在虚拟机中创建的命名管道。
  4. 勾选“管道”复选框,因为通过命名管道模拟COM端口。
  5. 将波特率设置为115200(与在启动顺序选项中设置的相同)。

配置完成后,WinDbg的设置应该如下图所示:

<img src="windbg-setup.png" alt="WinDbg配置">
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485