WinDbg
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)的命令等。