Windows驱动学习(四)-- 双机调试

时间:2024-04-04 13:05:39

教程参考自:https://www.bilibili.com/video/av26193169/?p=4

1. 概述

跟调试应用层程序不同,驱动不稳定,可能会导致蓝屏,所以我们不能在本机调试。一般的操作是在一个虚拟机中加载驱动,然后通过串口对该虚拟机的驱动进行调试。

2. 虚拟机配置

2.1 开启调试选项

以管理员身份运行cmd。
Windows驱动学习(四)-- 双机调试

键入bcdedit命令,查看当前启动项,输出如下:
Windows驱动学习(四)-- 双机调试

纯净的系统,一般只有一个标识为{current}的启动加载器是当前的启动配置。

建立一个新的启动项:
bcdedit /copy {current} /d “Windwos7”

设置新的启动项:
bcdedit /debug ON
bcdedit /bootdebug ON

查看当前的调试配置:
bcdedit /dbgsettings
Windows驱动学习(四)-- 双机调试

一般来说,会显示出使用的第一个串口,波特率为115200bps,和期望的一致,不需要修改。

选择菜单的超时,我设置为10秒:
bcdedit /timeout 10

重新启动,当需要调试时就用调试模式进入。
Windows驱动学习(四)-- 双机调试

2.2 设置串口

首先移除掉打印机,因为它占用了第一个串口,然后添加一个串行端口,命名为\.\pipe\com_1,同时设置另一端是应用程序。
Windows驱动学习(四)-- 双机调试

3. VS2017配置

配置串口连接。
Windows驱动学习(四)-- 双机调试

Display name随便填,Network host name则填虚拟机的计算机名。
Windows驱动学习(四)-- 双机调试

然后连接类型选择串口,勾上Pipe和Reconnect,Pipe name填入串口名“\.\pipe\com_1”。
Windows驱动学习(四)-- 双机调试

4. 拍摄快照

配置好的虚拟机最好打上一个快照,方便以后调试。
Windows驱动学习(四)-- 双机调试

5. 连接

做好以上配置后,在VS2017上点击Debugging Tools for Windows - Kernel Debugger进行调试。
Windows驱动学习(四)-- 双机调试

一路点继续。
Windows驱动学习(四)-- 双机调试

当右下角出现提示消息后就意味着连接成功啦。
Windows驱动学习(四)-- 双机调试

6. 调试

在代码上下好断点后,将对应的驱动文件复制到虚拟机中并加载,VS2017会自动断在断点处,如右所示,这时就可以开始调试啦。
Windows驱动学习(四)-- 双机调试