Windows驱动开发(二)配置双机调试

最后更新于 2024-09-18 827 次阅读


1.前言

Windows 下的双机调试通常指在两台计算机上设置调试环境,一台作为调试目标机(即运行待调试程序的机器),另一台作为调试主机(即运行调试器的机器)

但是当前环境下没有第二台电脑.就用虚拟机来代替

2.准备工作

  • 一台安装好镜像的虚拟机
  • VS2022
  • VirtualKD

3.VS2022调试与windbg调试

目前来说 可以用VS2022或windbg 来调试我们的驱动.所以写两种方案

4.方案1(VS2022双机调试)

4.1.配置虚拟机环境

  1. 首先确定VS2022 WDK 环境已经安装好,且能正常编译驱动

  2. 配置虚拟机环境 启动cmd 输入以下两条命令

bcdedit /copy {current} /d "Myos"
bcdedit /debug on
  • 命令 bcdedit /copy {current} /d "Myos" 旨在复制当前的启动配置项,并为新的条目指定一个描述。这对于创建一个可以进行特定配置或调试的新启动选项很有用。

  • 命令 bcdedit /debug on 用于启用调试模式.启用调试模式允许你通过调试器连接到系统

image-20240829182733515

  1. 然后重启虚拟机.出现以下情况.实际上我们需要myos 启动调试程序.反了.那就需要调整下.image-20240829183401798

  2. 开机进入桌面进入系统配置或cmd输入 msconfig.打开系统配置.选择引导->高级选项->调试打钩去掉即可.然后myos,选择调试保存确定重启recording

  3. 重启后 显示正常image-20240829183953014

6.关机.->编辑虚拟机设置->添加串行端口.如果有打印机需要先移除.->使用命名管道,输入:\\.\pipe\com_1image-20240829185517850

至此,虚拟机调试环境配置完毕!

4.2.配置VS2022调试环境

  1. VS2022.打开或创建一个驱动程序.在标题栏下面找到Debugging Tools for Windows - Kernel Debugger,只要装了wdk,就会有.如果没有可能你没有安装插件,重新安装以下WDK即可.该打钩的打钩.
  2. 点击后.弹出一个配置窗口

image-20240829185035426

  1. 单击[Add New device],输入显示名称和目标的计算机名称,点[下一步],选择Serial,pipe Name 输入 \.\pipe\com_1image-20240829190355492image-20240829190523447

image-20240829190534857

这样VS2022,配置完成

4.3.VS2022驱动调试测试

  1. 驱动虚拟机,选择myos,按下F8键.选择[禁用驱动程序签名强制].image-20240829190906529

  2. VS->选择调试->附加到进程->选择kernel->选择附加image-20240829193346380

3.成功image-20240829193543081

但是,会卡在这里非常🍷.大概有两分钟左右的时间.才会进入桌面,而且当有断点断下时,VS自动退出.暂时也没找到解决办法.

image-20240829193750928

5.方案2(WinDGB双机调试)

目前使用的就是这个方案.比较方便.

  1. 首先下载 [VirtualKD-Redux]Github地址https://github.com/4d61726b/VirtualKD-Redux

  2. 虚拟机把串行端口删了(如果有),然后启动虚拟机.进入系统后,把下载的VirtualKD-Redux解压.把target64文件夹复制到虚拟机里.且运行vminstall.

3.按照动图里设置即可.recording

4.然后本机启动vmmon64.设置windbg 路径即可

  • image-20240829212447154

5.设置完毕.每次启动虚拟机时.会自动弹出windbg,成功

5.1.Windbg测试

image-20240829212950423

6.总结

两种方法都可以.但是自己电脑VS2022断点断下来VS直接闪退了.目前未知原因.但是用WindDbg 新版本,也挺好用的.目前就这样吧.