之前没有做过驱动开发,一切从〇开始。陆陆续续看了些书,windows设备驱动程序wdf开发等。但是总是云里雾里的。所以想一点一点的积累下在驱动方面的知识。
首先我将记录下如何搭建调试环境?前提是wmware已装完毕,已有两台guest os. (xp 和win7)。下面针对两类系统的调试进行说明。
- 针对xp驱动调试的设置(参考:http://joeyliu.blog.51cto.com/3647812/937476)
1. 设置VM与Windbg通信的串口
打开目标系统的Virtual Machine Setting选项,在Hardware中添加新硬件:1)选择Serial Port;2)serial Port Type 选择“Output to named pipe”;3)Specify Socket的选项如图1吧;4)最终的配置结果如图2所示。然后启动VM的目标系统吧。
注意事项:一般情况下是串口2:Serial Port 2,原因是默认VM安装虚拟打印机占用Serial Port 1.
图1
图2
2. 设置Guest OS的启动项
进入WinXP的虚拟机操作系统,打开系统盘(C:\),将文件夹查看选项全开了,那在C盘根目录下有一个叫boot.ini的启动项文件,先去掉只读属性,以文本文件的方式打开,拷贝原来的启动项,作如下修改:
Multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect /debug /debugport=com2 /baudrate=115200
注意事项:如果步骤1中的serial port选择的是serial port 1是话,此处为com1.如果是serial port 2的话此处为com2.
3.配置WinDbg的快捷方式
在winddk的安装目录(C:\WinDDK\7600.16385.0\Debuggers)找到windbg.exe执行程序。在桌面创建快捷方式,并且修改属性如下:
"C:\WinDDK\7600.16385.0\Debuggers\windbg.exe" -b -k com:port=\\.\pipe\com_1,baud=115200,pipe
注意事项:host os 使用对应的windbg.exe,原因是windbg.exe有32和64位之分。
- 针对win7驱动调试的设置
- 单步调试
1. 加载符号文件
在windbg上键入:.reload
键入:ld charsample
键入:lm l
2. 设置断点
点击菜单“File”-> ”OpenSource File…”, 选择驱动程序目录下的源文件queue.cpp并打开。将光标移动到某指令位置,使用F9设置断点,则该处代码显示为红色,就表示断点已经设置了。
3. 使用F11可进行单步调试