1.前言
Windows 下的双机调试通常指在两台计算机上设置调试环境,一台作为调试目标机(即运行待调试程序的机器),另一台作为调试主机(即运行调试器的机器)
但是当前环境下没有第二台电脑.就用虚拟机来代替
2.准备工作
- 一台安装好镜像的虚拟机
- VS2022
- VirtualKD
3.VS2022调试与windbg调试
目前来说 可以用VS2022或windbg 来调试我们的驱动.所以写两种方案
4.方案1(VS2022双机调试)
4.1.配置虚拟机环境
-
首先确定VS2022 WDK 环境已经安装好,且能正常编译驱动
-
配置虚拟机环境 启动cmd 输入以下两条命令
bcdedit /copy {current} /d "Myos" bcdedit /debug on
命令
bcdedit /copy {current} /d "Myos"
旨在复制当前的启动配置项,并为新的条目指定一个描述。这对于创建一个可以进行特定配置或调试的新启动选项很有用。命令
bcdedit /debug on
用于启用调试模式.启用调试模式允许你通过调试器连接到系统
-
然后重启虚拟机.出现以下情况.实际上我们需要myos 启动调试程序.反了.那就需要调整下.
-
开机进入桌面进入系统配置或cmd输入 msconfig.打开系统配置.选择引导->高级选项->调试打钩去掉即可.然后myos,选择调试保存确定重启
-
重启后 显示正常
6.关机.->编辑虚拟机设置->添加串行端口.如果有打印机需要先移除.->使用命名管道,输入:\\.\pipe\com_1
至此,虚拟机调试环境配置完毕!
4.2.配置VS2022调试环境
- VS2022.打开或创建一个驱动程序.在标题栏下面找到
Debugging Tools for Windows - Kernel Debugger
,只要装了wdk,就会有.如果没有可能你没有安装插件,重新安装以下WDK即可.该打钩的打钩. - 点击后.弹出一个配置窗口
- 单击[Add New device],输入显示名称和目标的计算机名称,点[下一步],选择Serial,pipe Name 输入 \.\pipe\com_1
这样VS2022,配置完成
4.3.VS2022驱动调试测试
-
驱动虚拟机,选择myos,按下F8键.选择[禁用驱动程序签名强制].
-
VS->选择调试->附加到进程->选择kernel->选择附加
3.成功
但是,会卡在这里非常🍷.大概有两分钟左右的时间.才会进入桌面,而且当有断点断下时,VS自动退出.暂时也没找到解决办法.
5.方案2(WinDGB双机调试)
目前使用的就是这个方案.比较方便.
-
首先下载 [VirtualKD-Redux]Github地址https://github.com/4d61726b/VirtualKD-Redux
-
虚拟机把串行端口删了(如果有),然后启动虚拟机.进入系统后,把下载的VirtualKD-Redux解压.把target64文件夹复制到虚拟机里.且运行vminstall.
3.按照动图里设置即可.
4.然后本机启动vmmon64.设置windbg 路径即可
5.设置完毕.每次启动虚拟机时.会自动弹出windbg,成功
5.1.Windbg测试
6.总结
两种方法都可以.但是自己电脑VS2022断点断下来VS直接闪退了.目前未知原因.但是用WindDbg 新版本,也挺好用的.目前就这样吧.
Comments NOTHING