2018-04-29 21:21:55 +07:00
|
|
|
|
# 2.3.4 WinDbg
|
2018-05-21 11:06:54 +07:00
|
|
|
|
|
|
|
|
|
- [快捷键](#快捷键)
|
2018-05-24 20:24:18 +07:00
|
|
|
|
- [命令](#命令)
|
2018-05-21 11:06:54 +07:00
|
|
|
|
- [参考资料](#参考资料)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## 快捷键
|
2018-05-24 20:24:18 +07:00
|
|
|
|
- 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]`:反汇编指定地址区间
|
|
|
|
|
|
2018-05-21 11:06:54 +07:00
|
|
|
|
|
|
|
|
|
## 参考资料
|
|
|
|
|
- https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/
|