重要命令

记录你的工作

记住你做过的事情并保留长输出,这些输出无法保存在 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 命令的帮助手册