耗费了两天的时间,期间还找了前同事远程协助,才真正实现用VS2013来进行双机调试,期间各种不明所以,不过还是先记下来,不然就忘掉了。
先说一下配置:
Host :win7 x64
开发环境 : vs2013 + wdk8.1(没用7600,,同事建议我用7600,因为天生兼容xp嘛,我想现在才刚入门,就先别管那么多了)
vmvare : 11.1.0
vmvare OS : win8.1
目标:用VS2013调试安装在win8.1系统中的驱动
1.在虚拟机增加串口
配置如下图所示
Tips:有时候添加串行端口后,显示串行端口2,这样一般情况下是因为虚拟机里的打印机占用了串口1,如果虚拟机不需要打印机,同时又怕麻烦的话,那就直接删除掉打印 机,重新按照上面的配置增加一个串口就行了。
2.对虚拟机系统进行设置
在本例中,虚拟机系统就是win8.1
以管理员权限运行cmd,执行如下命令:
C:\Windows\system32>bcdedit /copy {current} /d "Win 8.1 Debug" (这里"Win 8.1 Debug"只是一个名字,可以随便取)
这时,系统会这样提示: 已将该项成功复制到 {945e8a3c-6a72-11e1-ab5a-eeb97f46a921}
这个UUID字符串是后面要用到的。
接下来执行
bcdedit /debug {945e8a3c-6a72-11e1-ab5a-eeb97f46a921} on
bcdedit /dbgsettings serial debugport:1 baudrate:115200
所有操作执行成功之后,还需要运行msconfig,在界面中显示
3.windbg配置
因为我的本机也是64位的,所以在桌面建议一个windbg x64的快捷方式,快捷方式的命令行是
"C:\Program Files\Debugging Tools for Windows (x86)\windbg.exe" -b -k com:port=\\.\pipe\com_1,baud=115200,pipe
这样,重启之后选择Win 8.1 Debug,就可以进行驱动调试了。
4.VS2013和WINDBG配置
现在我们要配置VS2013了,其实VS2013调用的是windbg,但二者的配置还是有区别的。
我们先看windbg。
在windbg里要关注两点:sourcefile和symbol file path。
sourcefile就是驱动入口所在的文件,因为我现在只写了一个文件的工程,所以我不知道如果多文件是不是这样(再次重申自己的小白属性)
symbol file path需要两个路径 : 一个是windbg的系统符号表, 一个是工程本身的符号表路径
系统符号表位置可以设置成这样SRV*c:\mysymbol* http://msdl.microsoft.com/download/symbols,如果后面还有别的路径,以;区分。
上面说完了windbg,现在来看看VS2013。
在VS2013中,我们也要设置符号表路径,不过省事的方式是在添加一个环境变量
然后我也把自己的符号表路径加到了Tools -> option -> Debug -> Symbols下面。
最关键的是在VS中选择编译方式。
5.调试
下面我们就可以正式调试了。
先建立一个WDM的工程,VS会给你增加一个passThrough-Package的包,这个包不用管。
然后就是要把生成的sys和inf文件,放到虚拟机里。
在虚拟机里要安装驱动,中间会遇到签名的问题,大家可以上网搜一下测试驱动的时候不验证签名的方式,这里我就不说了。
在调试的时候,先对VS2013 执行F5,然后在win8.1里管理员权限下执行net start 服务名,这时候VS就是在断点处停下。
终于可以调试了,对亏了游桑的帮助,否则我这块根本没法入门。