上一篇                     
               
			  Windbg命令使用教程?
- 电脑教程
- 2025-06-15
- 3239
 Windbg 通过输入调试命令分析问题,常用命令包括:加载dump文件 
 
 
.opendump;启动调试 
 g;查看调用堆栈 
 k;分析崩溃原因 
 !analyze -v;查看线程 
 ~;查看内存 
 d;设置断点 
 bp;查看模块 
 lm。
调试环境准备
-  设置符号路径(关键步骤) 
 符号文件(.pdb)关联源代码与二进制文件,缺失会导致函数名显示为地址。.sympath SRV*C:Symbols*https://msdl.microsoft.com/download/symbols # 加载微软公共符号 .reload /f # 强制重新加载符号 
-  打开转储文件(Dump)或附加进程 windbg -y "C:Symbols" -z "C:dump.dmp" # 启动时指定符号和转储文件 .attach <PID> # 附加到运行中的进程(替换<PID>为实际进程ID) 
基础调试命令
| 命令 | 作用 | 示例 | 
|---|---|---|
| g | 继续运行程序 | g(恢复暂停的程序) | 
| k | 显示当前调用栈 | k(查看崩溃时的函数调用链) | 
| !analyze -v | 自动分析错误原因 | !analyze -v(诊断蓝屏根源) | 
| lm | 列出已加载模块 | lm(检查驱动/DLL是否加载) | 
| .cls | 清屏 | .cls | 
内存与寄存器操作
-  查看内存内容  db 0x7ffd0000 # 显示指定地址内存(字节格式) dd 0x7ffd0000 L4 # 显示4个DWORD(4字节)数据 !address 0x7ffd0000 # 分析内存属性(是否可读写) 
-  寄存器操作 r # 查看所有寄存器值 r eax=0 # 将EAX寄存器值设为0(慎用) 
断点与代码跟踪
-  设置断点  bp MyModule!MyFunction # 在函数入口设断点 bp /1 0x7ffd0000 # 一次性断点(触发后自动删除) bl # 列出所有断点 bc * # 删除所有断点 
-  单步执行 p # 执行一条指令(跳过CALL) t # 执行一条指令(进入CALL) 
高级诊断命令
-  句柄与内存泄漏检测  !htrace -enable # 开启句柄跟踪 !htrace <Handle> # 分析句柄创建堆栈 !heap -s # 统计堆内存使用 
-  驱动调试(内核态) !drivers # 列出所有加载的驱动 !irql # 查看当前中断请求级别 !devobj <DeviceObject> # 查看设备对象信息 
实战案例:分析蓝屏转储
- 打开 dump 文件后立即运行: !analyze -v # 获取错误码(如IRQL_NOT_LESS_OR_EQUAL) 
- 查看崩溃线程栈: k # 定位触发崩溃的驱动(如MyDriver.sys) 
- 检查驱动版本: lm vm MyDriver # 验证驱动是否兼容 
安全提示
- 生产环境谨慎操作:g(恢复运行)可能导致服务中断。
- 数据备份:修改内存/寄存器前保存工作状态。
- 符号一致性:确保符号文件与二进制版本匹配。
学习资源
- 官方文档:Windows Debugging Tools
- 书籍推荐:《Advanced Windows Debugging》(Mario Hewardt)
- 社区支持:OSR Online
引用说明:本文内容参考 Microsoft Docs 官方调试文档、Windbg 内置帮助命令(
.hh)及行业公认调试实践,命令语法经 Windbg Preview(最新版)实测验证。
 
  
			 
			 
			 
			 
			 
			 
			 
			