1.首先下载windbg这个工具包含在wdk可以到微软官方网站免费下载
2 设置windows xp调试
打开系统安装盘,在文件夹选项中设置为显示所有文件,不隐藏系统保护的文件,然后就可以看到一个boot.ini文件
boot.ini 的文件内容一般如下
[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)\windows
[operating system]
multi(0)disk(0)rdisk(0)partition(1)\windows="Microsoft windows xp professional" /noexecute=optin /fastdetect
将最后一行复制一下,并加上新的参数使之以调试方式启动,修改结果如下
[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)\windows
[operating system]
multi(0)disk(0)rdisk(0)partition(1)\windows="Microsoft windows xp professional" /noexecute=optin /fastdetect
multi(0)disk(0)rdisk(0)partition(1)\windows="Microsoft windows xp professional" /noexecute=optin /fastdetect /debug /debugport=com1 /baudrate=115200
保存文件,如无法保存请将文件属性中的只读属性去掉
3 设置vista 调试
vista中已经不再使用boot.ini文件了,而是在vista启动之后打开控制台,输入
bcdedit /?
这回现实一段帮助文字,能看懂最好,不能看懂也没有关系。
下面我们要列出本机上所有"操作系统加载器"的情况,请输入
bcdedit /enum OSLOADER
如果是刚安装的系统,一般只有一个标识为{current}的OSLOADER,这就是当前的启动配置。现在所需要的是建立一个新的启动配置,从完全空白开始建立非常麻烦,
我们可以拷贝一个
bcdedit /copy {current} /d "windows vista Copy"
拷贝之后会提示已经建立了一个新的配置,新配置标识非常长,是一个GUID字符串。要设置新的配置每次都要输入那个GUID字符串很麻烦,
不过设置当前配置不需要输入配置标识。
输入以下两条指令即可
bcdedit /debug ON
bcdedit /bootdebug ON
输入后,还可以输入一条指令看一下当前的调试配置
bcdedit /dbgsetting
一般来说,会显示出使用的第一个串口,波特率为115200bps。最后指定选择菜单的超时,太长在无人启动时会很慢,太短则来不及选择。一般7秒左右
bcdedit /timeout 7
重新启动进入调试模式
4 设置VMWARE的管道虚拟端口
调试机与被调试机用串口相连,但是在被调试机是虚拟机的情况下,就不能用真正的串口连接。但是可以在虚拟机上生成一个用管道虚拟的串口
用VMWARE打开建立的虚拟机,但不要启动,按以下步骤操作
4.1 在左边的Commands 栏中单击"Edit virtual machine settings",出现Hardware页,单击下面的"Add"按钮,出现"Add HardWare wizard"
单击下一步按钮
4.2 Hardware types 选择 "Serial Port",单击下一步按钮
4.3选择"Output to named pipe" ,单击下一步按钮
4.4 这时有3个框可以选择:前2个保持默认,分别为"\\.\pipe\com_1“和"This end is the server",第三个修改为"The other end is an applicaion"(注:最新版的VMWare和 这个默认不同,第二个为"this end is the client",第三个为"ths other end is an application")然后点击"完成"按钮即可。
虚拟机设置好了,下面是调试机上windbg的启动参数,使之连接一个管道,并把这个管道当作一个串口来处理
windbg.exe -b -k com:port=\\.\pipe\com_1,baud=115200,pipe
上面的命令是在控制台执行的,执行前首先要转到windbg.exe所在目录。更方便的办法在桌面上建立一个windbg.exe的快捷方式,单击右键并选择属性,在快捷
方式中,在"目标"中的"...windbg.exe"后增加前面的启动参数。注意:windbg.exe的全路径一般是用双引号引住的,但是后面的命令行参数应该放到引号外。
刚连接上的时候,虚拟机里面的windows系统会被中断,貌似死机,这时,请在windbg的命令提示符"kd>"后面输入"g"bing
5设置windows内核符号表
现在操作系统进入了调试模式,那么怎么调试之前编译呢,实际上,没有必要告诉windbg需要调试的是什么,windbg把内核视为一个整体,我们需要告诉调试代码的路径 和符号表的路径,在调试连接上之后,打开windbg的主菜单"File" 下的"Symbol File Path",在这里输入符号表的位置。符号表和sys产生在同一个目录下,所以只要指定
本机上编译结果所在的objchk_wxp_x86\i386目录就可以了。
如果有多个驱动需要调试,那么可以指定多个路径,路径之间用分号分隔。
此外,需要指定windows的内核符号表。windows的每一个sys文件都有自己的符号表,这些符号表需要从网上下载,但是没有必要自己去下载,可以在Symbol File Path 中
增加如下一条设置,用分号与其它路径分隔
srv*c:\symbols*http://msdl.microsoft.com/download/symbols
这个设置从网上下载所需要的符号表。这个会使windbg变得很慢,并且不是每次都能成功。