安装驱动开发环境:
1,首先下载 DDK,从微软的网站上搜索“DDK”,一般会搜索到:
“Windows Server 2003 DDK”
http://www.microsoft.com/whdc/DevTools/ddk/default.mspx
2,安装 DDK
..........
3,编译驱动程序
具体如何写 makefile 和 source 我就不说了,比较老套。
点击某个你需要的版本的编译环境,到驱动所在目录下,敲入 build,回车即可开始编译。
以下重点介绍如何利用 WinDbg + VMWare 来调试驱动程序。
虚机中的系统选择 Windows Server 2003 Enterprise Edition, no server pack
下载 Windows Symbols:
下载地址:
http://www.microsoft.com/whdc/devtools/debugging/symbolpkg.mspx
我的 VMWare 虚拟机环境是 Windows 2003 Enterprise,
所以需要下载的是:Windows Server 2003 symbols with no Service Pack
展开 Windows Server 2003 and Windows XP x64 Edition 下载:
Windows Server 2003 x86 retail symbols, all languages (File size: 168 MB - Most customers want this package.)
下载 WinDbg 调试工具
下载地址:
http://msdl.microsoft.com/download/symbols/debuggers/dbg_x86_6.5.3.8.exe?WinDbg
程序的最新版本,同样也安装到真实系统中。
虚机中,添加启动选项:
我们要在虚拟机中装系统了,我用的是 Windows Server 2003 Enterprise Edition。安装完成后修改 C 盘根目录下的 boot.ini 文件。在里面 [operating systems] 节中加入一行,
multi(0)disk(0)rdisk(0)partition(1)/WINDOWS="Windows Server 2003, Enterprise - debug" /fastdetect /debug /debugport=com1 /baudrate=115200
为虚机增加虚机 COM 口:
随后,关闭虚拟机中的系统。开始配制虚拟机的硬件,
点击 "Edit virtual machine settings",添加一个 Serial Port,
选择 "Output to named pipe",
然后下一步,第一框里保持默认的 "//./pipe/com_1"
第二框里选"This end is the server."
第三框里选"The other end is an application."
选中 "Connect at power on"
然后点击 "Advanced>>" 然后在新窗口中选中 "Yield CPU on poll"。保存退出。
好了,以上就是虚拟机系统要做的全部事情。
修改本机 COM 口速率配置:
1,在真实系统中(也就是你现在用的系统),在设备管理器中。找到 Com1 口,然后再属性页中修改他的速率为115200。
2,为了以后使用的方便,需要创建一个 WinDbg 的快捷方式。快捷方式的命令行为
"C:/Program Files/Debugging Tools for Windows/windbg.exe" -y SRV*C:/Windows/Symbols/*http://msdl.microsoft.com/download/symbols -k com:pipe,port=//./pipe/com_1
我设置的是:
"C:/Program Files/Debugging Tools for Windows/windbg.exe" -y SRV*C:/Win2003ServerSymbols/*http://msdl.microsoft.com/download/symbols -k com:pipe,port=//./pipe/com_1
因为我的 Windows 2003 的 Symbols 存放在 C:/Win2003ServerSymbols/ 里。
这里面 -y 后面的路径就是我们前面安装符号表的路径。
特别注意的是:上面这个参数好多文章写的是错误的,我这个是对的。详细可以看 WinDebug 的帮助文件。
其他事宜:
使用时,首先运行虚拟机系统,到bootloader选择进入哪个系统的时候,我们先按一下上下,将倒计时停止。然后再到真实系统中运行刚才我们创建的WinDbg快捷方式。运行完成后再在虚拟系统中选择带有调试标志的系统即可。
此时虚拟机中会黑屏一片,WinDbg也一直显示“Wait for connect”,
这时你需要点 WinDbg >> Debug >> Kernel Connection >> Cycle Initial Break 即可。
此时回到真实系统,稍等一会就可以看到WinDbg输出信息告诉我们两个系统已经连接上了。到此调试器已经和VMware 虚拟机连接成功了,下面就可以进行期待已久的调试工作了。
个人心得:
1,2008年08月20日
刚开始,虚机刚启动的时候我 break 然后设置断点。发现怎么都设置不上,一直提示说无法找到 Symbols,急得我把所有版本的 Symbols 都下载了,结果还是不行。后来,考虑了一下是否是因为 Win 没有启动完成,也就是没有完成 Symbols 的装载呢?结果我等到虚机中的系统出现 2003 的用户登陆界面的时候 break,哇,居然搞定了。我实在太愚蠢了!