在用VS2015调试驱动时,有不少调试工具,但试来试去,发现有的不能成功,一方面是因为操作系统不匹配,还有的是对虚拟机版本有要求,没有试到一个通用的,今天试一下管道模式:
本文档一是记录方法,二是从网上查找,摘抄,再此感谢各位大佬的无私共享,让我们一起进步,去帮助更多爱好学习的人。
一、主计算机和虚拟机两台机器必须关闭防火墙,必须能够互相ping通(使用桥接模式).
二、 将WDK10携带的调试驱动包拷贝到虚拟机中安装:
1)WDK10安装时如果用的是默认路径: //两个都可以安装,因为VS2015可以调试32位和64位的驱动程序
C:\Program Files (x86)\Windows Kits\10\Remote\x64\WDK Test Target Setup x64-x64_en-us //64位调试驱动包
C:\Program Files (x86)\Windows Kits\10\Remote\x86\WDK Test Target Setup x86-x86_en-us //32位调试驱动包
2)如果你自定义了WDK10安装路径,请到你指定的目录寻找.
三、虚拟机添加串口:
1)设置–>添加–>串型接口–>输出到命名管道.
2)设置选项为“另一端为应用程序” 并且“ 为管道命名不要为常见名称” --> 添加命名管道完成.
问题:因为一般虚拟机的串口1是打印机,串口2才是我们创建的,所以可能连接时,会弄错,导致后来不能连接上串口通道.
解决:打开“运行”输入MSConfig,弹出MSConfig工具:(原创百度经验地址:http://jingyan.baidu.com/article/3a2f7c2e6dee4126afd611c6.html)
1)打开boot工具的debug,修改com1为com2:
四、虚拟机进入调试模式://使用管理员权限打开cmd,输入以下命令
1)bcdedit /debug ON 开启调试模式
//设置串口的波特率为115200bps(其实默认就是,不用修改)
2)bcdedit /dbgsettings serial debugport:串口号 baudrate:115200
3)bcdedit /dbgsettings 查看当前的调试配置
4)bcdedit /timeout 10 选择菜单的超时,我设置为10秒
五、驱动程序的项目点右键–>选择属性菜单–>选择调试选项–>在右边要启动的调试器上选择Debugging Tools for windows – Kernel Debugger–>在Remote Computer Name上点击配置,就会出现配置窗口,界面如下:
1)点击Add New Devide添加调试主机.
2)下一步
3)点击下一步,会对虚拟机进行自动安装,在此过程中,不应动虚拟机:
4)安装完成后,点击应用:
5)在VS2015中选择调试–>附加到进程:
1、传输:选择Windows Kernel Mode Debugger
2、限定符:选择创建新测试设备时输入的那个名称
3、以下可用进程出现一个Kernel的进程,点击它附加.
6)附加完成后,VS2015右下角会出现Debugger的“waiting to reconnect”.
7)如果没有问题,重启虚拟机,VS2015右下角会出现Debugger就会连接上了,状态为“正在跑”.
8)虚拟机启动完成后,打开“驱动程序加载工具"
必须确保将加载的驱动程序的.sys是DEBUG版的,而且要与VS2015调试中的代码对应.
(你的sys和加载驱动工具必须已经测试过能够加载驱动程序.)
//这就需要先看地址:http://blog.csdn.net/aaron133/article/details/78091639 加载驱动的文章.
9)打开“驱动程序加载工具"后,VS2015中点击暂停:,你会发现虚拟机整个卡住了.
10)现在才能设置有效断点,F9设置好断点后:
在VS2015右下角的Debugger界面中输入:kd> g 表示继续跑.
11)使用加载驱动程序加载我们的.sys驱动程序,当sys跑起来后,就能够断下来了:
如果在此其中出现问题,请查看详细文章:http://blog.csdn.net/liuyez123/article/details/50857621