-
困扰我多天的问题终于在今天解决了,感觉很轻松啊!调试
Window
s
内核程序不能象
r3
层
的应用层一样,可以随便调试!毕竟人家是运行在
r0
层的!你要是设置中断的话,会导致
整个操作系统暂停!据说以前都使用
SoftICE
调试,这个是一个单机调试的软件,使用后会
使系统很不稳定,后来
NuMega
公司宣布停止
p>
SoftICE
的开发,
因此估计现在也不
太会有人
用了!
!
微软出的
WinDbg
是利用双机调试的一款软件,
当然按照书上说的,
肯
定使用虚拟机和主机
这样“双”
机调试!在调试的时候要设置很
多东西,
我就是因为设置这些东西困惑了我整整
半个学期!
p>
现在我把自己的设定写一下,也是根据
书上的,但是书上说的实在是他娘的太模糊了!
!下
载安装
p>
winDbg
和
VMWare
虚拟机我就不说了,已经虚拟机安装
xp
系统!先在
虚拟机的
windows
安装目录下
C
盘下有个
(当然是处于隐藏状态,选择
工具
-
》文件夹选项
-
》
把隐藏受保护的操作系统文件这个选项去掉)修改
b
oot
。
ini
内容改为
[boot loader]
timeout=30
default=multi(0)d
isk(0)rdisk(0)partition(1)WINDOWS
[operating systems]
multi(0)
disk(0)rdisk(0)partition(1)WINDOWS=
Wind
ows
XP
Professional
/noexecute=optin
/fastdetect /noguiboot
multi(0)disk(0)r
disk(0)partition(1)WINDOWS=
Windows
XP
Professional
/noexecute=optin
/fastdetect /debug/debugport =
com1/baudrate=115200
//
红色我本机
绿色背景的是
增加的
[boot loader]
timeout=5
default=multi(0)di
sk(0)rdisk(0)partition(1)WINDOWS
[operating systems]
multi(0)
disk(0)rdisk(0)partition(1)WINDOWS=
Wind
ows
XP
Professional
/noexecute=optin
/fastdetect
C:GHLDR=
一键
GHOST
v2010.10.10
然后关
闭虚拟机系统,在
VMware
的
Co
mmands
栏中单击
Edit virtual
machine setting
“,选
择
Hardware
页,
然后单击
A
dd
,
选择
Serial Port<
/p>
(串口)
,
单击下一步,
选择
Output to named
pipe <
/p>
单击下一步,保持前
2
个不变,分别为<
/p>
.pipecom_1
和
This
end is the
server,
第三个修
改为
The
other end is an application,
这样虚拟机就算设置好了,接下来设置主机,转到你安装
WinDbg
的目录下,然后右击
WinDbg
。
exe
选择桌面创建快捷方式,退回到桌面,右击该快捷方式,选择属性,将目
标改
成
FilesDebugging
Tools
for
Windows
(x86)
-b
-k
com:pipe,port=.pipecom_1,resets=0
,
当然
C:Program
FilesDebugging
Tools
for
Windows
(x86)
是你的安装目录,应按照自己的而定!现在万事具备
,可以调试了
首先在虚拟机里安装
好自己要调试的
sys
文件,然后重新启动虚拟机,开启的时候
会有多了
个选项,选择调试,然后这个时候打开桌面的那个
wi
nDbg
,
(当时我怎么也退步出来鼠标,
鼠标被锁定在虚拟机里面,可以同时按
ctrl+alt
)
,然后在
WinDbg
里面输入
G
,接下来就是
设
置
符
号
表
p>
,
选
择
winDb
g
的
file-
》
Symbol
path
里
面
p>
输
入
srv*e:symbs*/down
load/symbols;D:WDKfirstobjchk_wxp_x86i386
(其中
D:WDKfirstobjchk_wxp_x86i386
是符号表位置,该位置也就是你的那个
sys
文件<
/p>
的地址,前面的好像是下载符号表,前面的
e
代表下载在
E
盘,可以自己改,
)
等到虚拟机
完全进入
windowxp
界面后,
选择开始
运行
cmd
,
然后输入
net start xxx
启动你的
sys
服务,
这个时候就可
以像调试应用程序一样单步运行什么的了!
!
!
!
大体在
哇卡卡大牛的帮助下最后面终于成功啦
(DDK
下面的那个
p>
diskperf
被我用
inf
方式加
载以后用
InstDrv
< br>卸载就使命卸不下来
,
最后已快照收场
< br>),
昭示着我在一个月之后继续开展驱
动之旅
,
具体教程可以参考教主空间三篇文章
;
Windbg+Vmware
驱动调试入门
(
一
)_______Windbg
的设
置
Windbg+Vmware
驱动
调试入门
(
二
)---Vmware<
/p>
及
GuestOS
的设置
Windbg+Vmware
驱动调试入门
(
三
)---Windbg
基本调试入门
不过第二篇中有个笔误
4.
建立双机调试快捷方式
在桌面建立一个
Windbg
的快捷方式命名为
“双机调试”
,
然后编辑其属性,把“目标”后面
加上
-k
com:port=.pipecom_1,baud=11520,pipe
比如我的电脑上,完整的应该是这个样子:
:
FilesDebugging
Tools
for
Windows
(x86)
-k
com:port=.pipecom_1,baud=115200,pipe
p>
并且建议在改
的时候把
debug
的那个项放到第一个
,
然后把
timeout
改小点
这样子开
机就方便多了
,
至少我这么认为
. :-D
有天书夜读的话
,
也可以参看他第八章的相关内容
,(
其实是差不多的
)
最后我们一起来膜拜教主和哇卡卡同学吧
.
Win
dbg+Vmware
驱动调试入门
(
一
)_______Windbg
的设置
2009
年
01
< br>月
08
日
20:56
Windbg+Vmware
驱动调试入门,
写给
wakaka
小童鞋,
很强大的小童鞋,
同时也做为自己的
< br>存档
~~
Windbg
的设置
Windbg
本身可以直接从微软的
网站上下载
下载地址:
/whdc/
devtools/debugging/
Windbg
的设
置其实主要是关于调试符号的设置
,
没有符号你会很不爽
,
会忽视掉许多细节
,
因
此调试符号之于
Windbg
是非
常重要的
.
1.
系统调试符号的设置
首先找个空间足够的位置
,XP sp2
的调试符号完整一点大概需要
1G
的空间
~~
比如我是在
D
盘
,
建立一个
MyLocalSymbols
文件夹
,
用来存放系统的符号文件
.
然后你可以从微软的网站上下载相应的调试符号包
(
大要
180M~200M
大小<
/p>
),
要根据你虚拟机
中的相应系统版本来
下载,安装到
MyLocalSymbols
文件夹下
.
当然
,
不安装符号
包的话也可以设置成调试时自动从网上下载
(
即使你安装了符号
包
,
有部分
内容还是要到网上下载
p>
),
具体怎么设置稍后讲
.
不过我比较喜欢一次搞完
,
免得每次用的时候都要等
它到网上下载比较慢
~~
2.
自己的调试符号的设置
再建一个文件夹
,
用于存放我们自己编译出来的
驱动的符号文件
.
单独存放
,
不要跟系统的混
到一起
.
我这里就仍在
D
盘建立一个
MyS
ysSymbols
文件夹
,
用于存放
自己的符号文件
.
然后给这个文件夹创建一个快捷方式
,
把它放到
C:Documents
and
Settings
你的用户名
SendTo
文件夹下
.
这样
,
以后编译完驱动以后
,
直接在符号文件上右击
->
发送到
就可以了
,
很
方
便
~~
3.
环境变量的设置
如果你想
Windbg
启动时自动识别符号路径的设置
的话
,
我们就来建立一个环境变量
<
/p>
在
我的电脑
p>
上右击
,
属性
p>
高级
环境变量
p>
然后我们给当前用记新建一个名为
_NT_SYMBOL_PA
p>
TH
的环境变量
值为
:
D
:MyLocalSymbols;D:MySysSymbols;SRV*D:MyLocalSymbol
s*/d
ownload/symbols
这样设置以后
p>
,
系统的调试符号就在
D:MyLocal
Symbols
下
,
而我们自己驱动的
调试符号就在
D:MySysSymbols
下
当符号文件不匹配时
,Windbg
会自动连网从
/download/symbols
下
载
符号文件到
D:MyLocalSymbols,
下次再用到时就不用下载了
设置好保存就可以了
,
修改环境变量需要重新启动系统才能生效
~
到这里我再说一点
,
当你用了一段时间之后
,
常用的符号文件基本
上就全有了,不想等,也可
以用一些方法让
Windbg
马上下载符号文件
直接打一些正确的但是当
前符号包中不正确或不匹配的符号名称可以
刺激
马上到
网
上
< br>下
载
,
我
为
了
节
约
时
间
就
是
这
p>
么
干
的
.
比
如
打
dt
nt!_KPCR,
如
果
你
的
内
核
文
件
TimeDataStamp
不匹配
(
内核等几个核心文件由于更新经常会这样
)
使得
Windbg
无法正确显<
/p>
示此符号
,
它就会马上乖乖地到网上把整
个符号文件下载回来
~~
在调试符
号基本全了以后
(
调试时基本不再出现
Windbg
再连网下载符号文件的情况
)
,建议
把
环
境
变
量
中
联
网
的
部
分
去<
/p>
掉
。
以
我
的
为
例
,
就
是
设
置
成
D:MyLocalSymbols;D:MySysSymbols
p>
这样就断了它连网下载的念想,
否则你一旦打错个符号,
它还是会很负责地上网查找、
下载
,
结果还是找不到,浪费很多时间
~~
如果确实某个
符号找不到需要临时上网找,那么执行下面命令就可以了
.sympath+
SRV*D:MyLocalSymbols*/download/symbols
这样就重新恢复了
Windbg
上网下载符号的能力
这里只是设置部分,关于
Windbg
的初步使用稍后会写,小童鞋莫急哦
~~
这一篇是主要是关于
Vmware
部分的设置
,
其实参考
JIURL
那篇很经典的《借助
VMware
实
现单机使用
WinD
bg
》
就可以了
.
不过那篇文章里面有个小错误
(不知道是原作者不小心,还
是别人转载的时候错了)
,后面的波特率应为
115200
p>
而非
11520
我就再来写一下吧,内容基本雷同,稍微精简一些
Vmware
的相关设置
1.
编辑
V
mware
设置
,
添加一个串口设备<
/p>
.
首先我们要添加一个串口设备
.
p>
打开你的虚拟机,选择“编辑虚拟机设置”
p>
然后
添加
)
串口
)
输出到命名管道
)
一路
Next
名称就用默认的<
/p>
,这个其实对应于你的串口名称
com1
,用别的名字当然也
可以,不过后面要对应
第二行选择
第三行选择
同时把下面的
打开电源
时连接
)
请见下图:
好了<
/p>
,
这回串口设备有了
.
< br>下面进行相关设置
2.
设置串口波特率
启动虚拟机中的
OS,
进入系统
,
打开设备管理器选项
,
这时就看到
刚才添加的串口
com1
了
双击
com1
设备进入属性设置,在
端口设置
选项卡中选择<
/p>
每秒位数
也就是
波特率为
115200
(
据说
Windbg
可以自动适应波特率,没尝试过,因此还是设置一下吧<
/p>
)