重要命令

记录你的工作

记住你做过的事情并保留长输出,这些输出无法保存在 WinDbg 的缓冲区中。有一个日志可用于重现调试步骤,例如在 Stack Overflow 上提问。

命令 目的
.logopen 创建一个日志文件
.logclose 关闭日志文件
.dump 保存故障转储文件(当前调试会话的快照)

使用符号

如果没有或有不正确的符号,你可能会收到错误信息并被误导。在 WinDbg 中开始工作之前,请确保你熟悉这些命令。另请参见如何在 WinDbg 中设置符号

命令 目的
.symfix 设置或添加符号到官方 Microsoft 符号路径
.sympath 设置或添加自己或第三方符号
.reload 重新加载符号
.symopt 定义符号处理选项
!sym 控制符号加载
x 检查符号
ln 列出最近的符号

崩溃分析

找出发生了什么(在崩溃转储中)以及如何处理事件(在实时调试中)。

命令 目的
.exr 显示异常记录
.lastevent 显示上次活动
sx 定义异常处理
!analyze 分析崩溃或挂起
!avrf 应用验证者

环境

检查进程名称和版本信息。

命令 目的
(管)
lm 模块列表

线程,调用堆栈,寄存器和内存

检查细节。

命令 目的
~ 线程列表
r 寄存器
k 调用堆栈
d * 显示内存
e * 编辑记忆
s 搜索记忆
.formats 在数字格式之间转换
? 评估表达
u * 拆卸
a 集合
!address 记忆信息

控制目标

在实时调试中,控制执行。

命令 目的
g 去/继续
gu
p 一小步
t 跟踪(单步和输出寄存器)
bp 设置断点
bl 断点列表

使用扩展

扩展可以提供显着的优势和增强。

命令 目的
.load 加载扩展(完整路径)
.loadby 相对于模块的负载扩展
.chain 显示加载的扩展名
.unload 卸载扩展

停止调试

命令 目的
q 退出并终止申请
qd 脱离并退出

连接和分离

命令 目的
.tlist 流程清单
.attach 附加到过程
.create 创建流程并附加
.childdbg 定义子进程调试行为
.detach 脱离过程
.kill 杀死一个进程
.restart 重启过程

WinDbg 的行为

命令 目的
.prefer_dml 设置调试器标记语言处理
.effmach 切换位

可用性命令

命令 目的
.cmdtree 在单独的窗口中加载带有预定义命令的文本文件

得到帮助

命令 目的
.hh 显示 WinDbg 命令的帮助手册