[由于进入了Windows驱动编程领域第一步就是搭建环境,整个环境来说说难也不难,只是比较麻烦。文章有些地方比较繁琐的,而且别人写的比较好,作为引用参考直接贴连接了。如果你按照我写的一步步完成,很快就可以使用Windbg进行双机调试了]

[准备工作]

1:WDK7.1,由于是做Windows Xp下的驱动开发,只能用WDK,如果是WDK8以上的,应该没有这么麻烦。

2:VM虚拟机,并且有XP原版镜像,这个都可以网上下载的。

3:VS2012以上的版本,完全安装好

4:Windbg调试工具

[操作步骤]

一、我们先搭建虚拟机与物理机的通信、调试。

1.安装好虚拟机以及安装好Windows xp操作系统,这个过程很简单,我没有必要说了

2.设置虚拟机与调试机的命名管道通信。

在虚拟机设置里面增加串口串行端口,名字是\\.\pipe\com_1

名字是可以自己取的,后面对应好就行了。注意这里是串行端口2!

3.设置XP调试模式

打开虚拟机进入桌面,“我的电脑”右键->属性->高级->启动恢复设置->编辑,打开boot.ini,也就是一个记事本,里面增加一行

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

这里设置后以后,最好选择默认进入调试模式

二、设置Windbg与被调试机的通信

1.下载windbg

在微软官网去下载,microsoft是有专门下载的

2.安装好之后在桌面创建快捷方式,指向windbg.exe

3.修改快捷方式的名字,完成和被调试机的通信。

"C:\Program Files (x86)\Debugging Tools for Windows (x86)\windbg.exe" -b -k com:pipe,port=\\.\pipe\com_1,resets=0

三、加载符号表

这个在windbg中,对symbol path设置,设置成由网上缓存到本地

cache*c:\mysymbol;srv*http://msdl.microsoft.com/download/symbols;

四、成功后的图

五、对VS2012设置,VS作为写代码的工具

具体设置我直接贴链接:http://bbs.pediy.com/showthread.php?t=193020

http://blog.csdn.net/augusdi/article/details/9005121

六、这是最后一步了

VS2012对sys的编译很不好的,经过第五步你可能还是无法编译,很正常,你可以用wdk自带的编译cmd来编译,以后就在vs2012里面写代码,然后用wdk自带的编译器编译成功

具体的设置链接:http://jingyan.baidu.com/article/eae078278528c21fed548551.html

编译出来的文件,sys文件就是我们需要的驱动文件。

[相关文章]

VS2012下配置WDK开发环境,编写Windows驱动

Windbg驱动双机调试环境配置的更多相关文章

  1. Windbg+VirtualBox双机调试环境配置(XP/Win7/Win10)

    一.下载WDK10 https://developer.microsoft.com/zh-cn/windows/hardware/windows-driver-kit 安装Windows驱动程序工具包 ...

  2. Windbg双机调试环境配置(Windows7/Windows XP+VirtualBox/VMware+WDK7600)

    简介:Windbg双机调试内核.驱动 下载软件: 下载Windbg(GRMWDK_EN_7600_1.ISO) 下载VirtualBox 5.2/VMware 12 一.安装WDK,这里要提一点的是D ...

  3. VS 2013驱动开发 + Windbg + VM双机调试(亲测+详解)

    ------------VS 2013驱动开发 + Windbg + VM双机调试(亲测+详解)------------- WIN10已上线,随之而来的是VS2015:微软在 "WDK760 ...

  4. Windebug双机调试环境搭建

    Windebug双机调试环境搭建    开始进行内核编程/驱动编程的调试工作是非常烦人的,由于程序运行与内核层不受操作系统的管控,所以容易引起主机蓝屏和崩溃是常有的事.这也就使得内核程序的调试成了一大 ...

  5. [内核编程] Windebug双机调试环境搭建

    Windebug双机调试环境搭建    开始进行内核编程/驱动编程的调试工作是非常烦人的,由于程序运行与内核层不受操作系统的管控,所以容易引起主机蓝屏和崩溃是常有的事.这也就使得内核程序的调试成了一大 ...

  6. [01] HEVD 双机调试环境搭建

    [01] HEVD 双机调试环境搭建 span::selection, .CodeMirror-line > span > span::selection { background: #d ...

  7. MacOs/Liunx主机搭建windows平台双机调试环境

    0x00 前言 本文的主要试用对象是Mac OS/Linux用户,对于想调试windows内核相关的一些东西时,需要搭建双机调试环境的一些记录.另外对于本机是windows的用户也完全试用,windo ...

  8. linux--->lnmp环境调试环境配置

    lnmp环境调试环境配置 nginx是一个web服务器,因此nginx的access日志只有对访问页面的记录,不会有php 的 error log信息. nginx把对php的请求发给php-fpm ...

  9. windows7内核驱动开发试验环境配置

    首先配置环境参照这个: http://blog.csdn.net/qing666888/article/details/50858272 然后在win10里可能由于没有做测试签名因此一直没有成功加载驱 ...

随机推荐

  1. 《从Lucene到Elasticsearch:全文检索实战》学习笔记三

    今天我给大家讲讲倒排索引. 索引是构成搜索引擎的核心技术之一,它在日常生活中是非常常见的,比如我看一本书的时候,我首先会看书的目录,通过目录可以快速定位到具体章节的页码,加快对内容的查询速度. 文档通 ...

  2. 第四节《Git检出》

    使用过Git的朋友们都谁知道git reset可以达到重置效果,不知道的小伙伴们可以看下上一篇博客,重置命令的一个用途就是修改引用的游标指向,实际上在执行重置命令的时候没有使用任何参数对所要重置的分支 ...

  3. PythonStudy——Python字典底层实现原理 The underlying implementation principle of Python dictionary

    在Python中,字典是通过散列表或说哈希表实现的.字典也被称为关联数组,还称为哈希数组等.也就是说,字典也是一个数组,但数组的索引是键经过哈希函数处理后得到的散列值.哈希函数的目的是使键均匀地分布在 ...

  4. Linux-入门配置jdk,tomcat,mysql

    Mysql安装 大家可以在这里下 http://mirrors.163.com/mysql/Downloads/MySQL-5.7/ 1)查看CentOS自带的mysql rpm -qa | grep ...

  5. 在C#中如何判断线程当前所处的状态

    在C#中,线程对象Thread使用ThreadState属性指示线程状态,它是带Flags特性的枚举类型对象.   ThreadState 为线程定义了一组所有可能的执行状态.一旦线程被创建,它就至少 ...

  6. Spring Boot 入门之基础篇(一)

    原文地址:Spring Boot 入门之基础篇(一) 博客地址:http://www.extlight.com 一.前言 Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是 ...

  7. opencv简介

    Open Source Computer Vision Library.OpenCV是一个基于(开源)发行的跨平台计算机视觉库,可以运行在Linux.Windows和Mac OS操作系统上.它轻量级而 ...

  8. 虚拟空间,malloc

    一,内存空间分布图 所以,mmap其实和堆一样,实际上可以说他们都是动态内存分配,但是严格来说mmap区域并不属于堆区,反而和堆区会争用虚拟地址空间. 这里要提到一个很重要的概念,内存的延迟分配,只有 ...

  9. Tag (input) should be an empty-element tag.

    因为:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.o ...

  10. property用法

    用法一 class Test(object): def __init__(self): self.__Num = 100 def setNum(self,Num): print("---se ...