Win7+vmware+xpsp3+vs2010驱动开发环境搭建及调试方法

来源:互联网 发布:开源论坛源码 编辑:程序博客网 时间:2024/06/04 19:32

Win7+vmware+xpsp3+vs2010驱动开发环境搭建及调试方法

 

 

本文,系09年笔记记录整理,当时只有大概的步骤,最近又搭建环境,顺道比较详细的整理一下,以供自己备查。较之前的笔记,只是DDK和VMWARE的版本增高了,基本步骤还是大差不差。

 

注意:

如果是初次搭建环境,请大概浏览完全篇后,再参照本文搭建环境。

 

一、工具描述

主机:Win7 (原来是:XP sp3

虚拟机:vmware9.0 +XP sp3

WinDBG :DDK安装完成后即有

DDK:6.1.6001.18002.081017-1400_wdksp-WDK18002SP_EN_DVD.iso

注:

主机:hostOS

虚拟机:guestOS

代码来自于网络,详细如下:

#include <ntddk.h>

  

// 提?供?一?个?Unload函ˉ数簓只?是?为a了?能ü够?支§持?动ˉ态?卸?载?,?防え?止1驻痢?留?内ú存?

VOID DriverUnload(PDRIVER_OBJECT driver)

{

  // 但?什?么′都?不?做?,?只?打洙?印?一?句?话°:

  DbgPrint("first: Our driver is unloading...\r\n");

}

 

 

// DriverEntry,?入?口ú函ˉ数簓。£相à当獭?于瞞ain。£

NTSTATUS DriverEntry(PDRIVER_OBJECT driver, PUNICODE_STRING reg_path)

{

#if DBG//调獭?试?命ü令?

//       _asm int 3

#endif

  // 这a是?我ò们?的?内ú核?模£块é的?入?口ú,?可é以?在ú这a里?写′入?我ò们?想?写′的?东?西÷。£

  // 我ò在ú这a里?打洙?印?一?句?话°。£

  DbgPrint("first: Hello, world!...\r\n");

 

  // 设Θ?置?一?个?卸?载?函ˉ数簓便?于?这a个?函ˉ数簓能ü退?出?。£

  driver->DriverUnload = DriverUnload;

  return STATUS_SUCCESS;//返う?回?成é功|,?否?则ò不?执′行D

 

}

 

二、具体步骤

guestOS设置比较简单,具体操作如下:

添加串口:

VM->settings->hardware->add

选择 serial

设置如下图所示:

 

 

修改guestOS的boot.ini文件

在文件最末行添加如下内容:

multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional Debug" /fastdetect /debugport=com2 /baudrate=115200

debugport=com2,要根据你虚拟出来的串口号来设置。

本人电脑里设置的是COM2,如上图所示。

 

注意:

1、boot.ini 文件在C:根目录下,修改booti.in文件时,需要设置文件夹选项,详见下图的标注。

 

2、波特率

进入系统(虚拟机),修改串口的波特率为115200,默认建立的时,波特率是9600。

电脑右键->属性->硬件->属性管理,在弹出的框框里找到COM2修改即可。

 

虚拟机(guestOS)上的配置基本完成。

 

hostOS配置:

安装DDK

版本:6.1.6001.18002.081017-1400_wdksp-WDK18002SP_EN_DVD.iso,在微软网站可以下载到。

DDK的安装,可以使用DEAMON tools 安装即可。

 

WinDBG设置:

创建一个windbg的快捷方式

右击windbg快捷图标,并在属性下的目标内容后面,

添加“-k com:port=\\.\pipe\com_1,baud=11520,pipe”后,确定即可。

设置符号路径

WinDbg->菜单->File->Symbol File Path或“Ctrl+S”打开设置窗体,符号路径一般有两个两者以分号隔开。

 

1、是你设置保存系统DLL的PDB文件的路径

直接从微软网站下载,下载时一定要注意版本,也就是要和你的操作系统版本一致。

Symbol下载地址中

http://www.microsoft.com/whdc/devtools/debugging/symbolpkg.mspx

例如

我将其安装在E:\WINDOWS\Symbols,则在框中输入“E:\WINDOWS\Symbols”

 

2、驱动的PDB的路径,即你驱动生成所在的目录。

 

配图是原图,新搭环境的盘符与09年搭环境时有区别,需注意。

 

至此,hostOS(主机)需要设置的基本完成。

 

 

联调基本步骤:

启动虚拟机

选择 XP的调试版本,先不要按“回车键”。

 

主机(hostOS)上运行Windbg程序。

运行虚拟机上的XP系统(在虚拟机的 debug选项上按 “回车”)

 

hostOS上的windbg 出现如下信息:

 

 

 

虚机启动后如下:

 

后来发现是“symbol”搞错了。

新hostOS是WIN7(32bits),老的是WINXP

第一次装的symbol(Windows_Win7SP1.7601.17514.101119-1850.X86FRE.Symbols)是对应于WIN7的,

所以报上面的错误。

 

后重新下载并安装

WindowsXP-KB936929-SP3-x86-symbols-full-ENU,就正常了。

 

 

 

设置路径:

 

 

 

Windbg中“restart”后:

 

 

 

Windbg界面的命令行窗口输入“bu driver!driverentry”(不分大小写哦)

 

在驱动的DriverEntry函数的入口点下一个延迟断点,driver是你的驱动名字。

 

 

在虚拟机上加载驱动程序

这里使用instDrv工具,网上搜索能搜到。

 

 

 

hostOS上的WINDBG不能断点下来。

狠是邪门

后来,用DDK命令行编译驱动,用相同的方法,最终在驱动源文件里能断点下来。

而新搭建的环境采用VS2010来配置环境,编译驱动。开始怀疑VS2010的编译问题,后经过对比发现:

用VS2010编译时,未能生成PDB文件。

设置VS2010,如下所示:

 

 

再次重复前面调试驱动步骤,成功断点下来。

 

 

0 0
原创粉丝点击