Windbg是微软开发的免费源码级调试工具。Windbg可以用于Kernel模式调试和用户模式调试,还可以调试Dump文件。
1.从http://www.microsoft.com/whdc/devtools/debugging/installx86.mspx下载Install Debugging Tools for Windows 32-bit Version
2.从http://www.microsoft.com/whdc/devtools/debugging/symbolpkg.mspx下载Windows Symbol Packages,安装到D:\Program Files\Symbols
3.启动Windbg,File->Symbol File Path填写以上Symbols安装路径:
D:\Program Files\Symbols
4.File->Kernel Debug->Local,在下面执行lkd> !process出现以下错误:
NT symbols are incorrect, please fix symbols
这个可能是D:\Program Files\Symbols\exe\ntoskrnl.pdb破损所致。
解决方案:将第3步中的Symbol File Path填写为:
D:\Program Files\Symbols;
SRV*D:\Program Files\Symbols*http://msdl.microsoft.com/download/symbols
按照这样设置,WinDbg将先从本地文件夹D:\Program Files\Symbols中查找Symbol,如果找不到,则自动从MS的Symbol Server上下载所需要的Symbol,并且在本地D:\Program Files\Symbols文件夹下维持一份拷贝。
5.内核调试
FileàOpenExecutableà可以选择一个可执行文件进行调试; FileàAttache to a Processà可以选择一个运行中的进程,并对其进行调试;
FileàKernel DebugàLocalà可以选择本地内核调试。
一旦连接到了内核调试模式中,你可以使用众多的内核扩展命令(以“!”开头)来显示内核数据结构的内容。
6.用内核扩展命令查看常见内核对象数据结构(每条命令以分号隔开)
(1)进程:lkd> !process [0 0];dt nt!_eprocess;dt nt!_kprocess;
(2)线程:lkd> !thread;dt nt!_ethread;dt nt!_kthread;
(3)I/O请求包:lkd> dt nt!_irp;!irpfind;
(4)常见同步对象:lkd> dt nt!_kevent;lkd> dt nt!_kmutant;lkd> dt nt!_ksemaphore;
(5)作业:lkd> !job;会话(lkd> !session);内存管理(lkd> !vm)的命令等。
显示内核符号中所包含的类型信息的内核结构列表àlkd> dt nt!_*,若需递归显示子结构请使用“-r”开关。在.hh后面添加关键字,将显示该命令的帮助,例如:lkd>.hh irp。
详情参考:Debugging Tools For Windows help referenceàDebuggersàDebugger ReferenceàDebugger Extension Commands。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有