# 2.3.4 WinDbg

* [快捷键](#快捷键)
* [命令](#命令)
* [参考资料](#参考资料)

## 快捷键

* F10：单步步过
* F11：单步步入
* Shift+F11：跳出当前函数

## 命令

* 调试
  * `t`：单步步入
  * `p`：单步步过
* 执行
  * `g [addr|func]`：执行到指定位置
  * `gh [addr|func]`：执行到指定位置，遇到异常时中断
  * `gn [addr|func]`：执行到指定位置，遇到异常时忽略
* 断点
  * `bl`：列出已设置的断点
  * `be [ID]`：激活断点
  * `bd [ID]`：禁用断点
  * `bc [ID]`：清除断点
  * `bp [addr|func]`：设置断点
* 数据显示
  * `d [addr]`：显示内存数据
  * `db [addr]`：按字节模式显示
  * `dd [addr]`：按双字模式显示
  * `dD`：按双精度浮点数显示
  * `da`：按 ASCII 显示
  * `du`：按 Unicode 显示
  * `ds`：按字符串显示
  * `dt`：套用已知的数据结构模板显示
* 数据编辑
  * `e [addr] [data]`：修改任意地址内存的值
  * `eb [addr] [data]`：以字节写入
  * `ed [addr] [data]`：以双字写入
  * `ea [addr] [data]`：以 ASCII 字符写入
  * `eu [addr] [data]`：以 Unicode 字符写入
* 栈帧显示
  * `k [x]`：由栈顶开始列出当前线程中的栈帧，x 为需要回溯的栈帧数
  * `kb [x]`：可以额外显示 3 个传递给函数的参数
* 寄存器显示
  * `r [reg]`：显示指定寄存器的值
* 模块显示
  * `lm`：列出当前已经读入的所有模块
* 反汇编
  * `u`：反汇编当前指令后的几条指令
  * `u [start]`：从指定位置开始反汇编
  * `u [start] [end]`：反汇编指定地址区间

## 参考资料

* <https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/>
