云腾软件

祥云工作室 QQ:252895542

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

之前没有做过驱动开发,一切从〇开始。陆陆续续看了些书,windows设备驱动程序wdf开发等。但是总是云里雾里的。所以想一点一点的积累下在驱动方面的知识。

首先我将记录下如何搭建调试环境?前提是wmware已装完毕,已有两台guest os. (xp 和win7)。下面针对两类系统的调试进行说明。

驱动开发最好使用vmware虚拟机,好处不多说了。首先针对vmware虚拟机的设置(保证虚拟机是关机状态)

1. 设置VM与Windbg通信的串口

打开目标系统的Virtual Machine Setting选项,在Hardware中添加新硬件:1)选择Serial Port2serial Port Type 选择“Output to named pipe”;3Specify Socket的选项如图1吧;4)最终的配置结果如图2所示。然后启动VM的目标系统吧。

注意事项:一般情况下是串口2:Serial Port 2,原因是默认VM安装虚拟打印机占用Serial Port 1.

图1 

图1

图2

图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. WM和windbg的通信串口设置(同guest os为xp的设置一致)
2. 设置guest os 启动项
首先,运行msconfig进入引导tab页,点击高级选项,将调试选上,并且注意调试端口要和通信串口的设置保持一致,重启guest os.
其次, 方法一:启动guest os后,以管理员权限启动dbgview.exe。
方法二:如果想调试Kdprint的话可以修改注册表
[HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/Session Manager/Debug Print Filter] DEFAULT=dword:0000000f
3. 配置windbg的快捷方式(同guest os为xp的设置一致)

  •  单步调试

1.  加载符号文件

在windbg上键入:.reload

键入:ld charsample

键入:lm l 

2.  设置断点

点击菜单“File”-> ”OpenSource File…”, 选择驱动程序目录下的源文件queue.cpp并打开。将光标移动到某指令位置,使用F9设置断点,则该处代码显示为红色,就表示断点已经设置了。

3. 使用F11可进行单步调试


posted on 2013-04-24 10:14  云腾  阅读(1229)  评论(0编辑  收藏  举报