Windbg
是微软开发的免费源码级调试工具。
Windbg
可以用于
Kernel
模式调试和用户模式调试,还可以调试
Dump
文件。
通过使用WMware虚拟一个操作系统还可以在一台机器上实现操作系统的调试。
1.
从
http://www.microsoft.com/whdc/DevTools/Debugging/default.mspx
下载
Install Debugging Tools for Windows
2.
从
http://www.microsoft.com/whdc/devtools/debugging/symbolpkg.mspx
下载
Windows Symbol Packages(注意版本)
3. 启动 Windbg,File->Symbol File Path 填写以上 Symbols 安装路径: 后面用% Symbolspath%表示
4.File->Kernel Debug->Local,
在下面执行
lkd> !process
出现以下错误:
NT symbols are incorrect, please fix symbols
这个可能是%
Symbolspath%\exe\ntoskrnl.pdb
破损所致。
解决方案:将第
3
步中的
Symbol File Path
填写为:
% Symbolspath%
SRV*
%
Symbolspath%
*http://msdl.microsoft.com/download/symbols
按照这样设置,
WinDbg
将先从本地文件夹
D:\Program Files\Symbols
中查找
Symbol
,如果找不到,则自动从
MS
的
Symbol Server
上下载所需要的
Symbol
5.
调试
当运行你的程序时,假如你用VC开发,记得在连接选项中加入生成符号文件的选项
6.
用内核扩展命令查看常见内核对象数据结构
(
每条命令以分号隔开
)
(
1
)进程:
!process [0 0]
;
dt nt!_eprocess
;
dt nt!_kprocess
;
(
2
)线程:
!thread
;
dt nt!_ethread
;
dt nt!_kthread
;
(
3
)
I/O
请求包:
dt nt!_irp
;
!irpfind
;
(
4
)常见同步对象:
lkd>
dt nt!_kevent
;
lkd>
dt nt!_kmutant
;
lkd>
dt nt!_ksemaphore
;
( 5 )作业: lkd> !job ; 会话( lkd> !session );内存管理( lkd> !vm )的命令等。