15.5.2. Windbg¶
15.5.2.1. 命令行启动参数¶
g
忽视第一个debug断点p <pid>
attach到pid为<pid>的程序
15.5.2.2. 调试命令¶
- 单步调试
F11
单步,遇到函数跟进 (Step Into)F10
单步,遇到函数跳过 (Step Over)Shift + F11
跳出当前函数 (Step Out)
- 执行到指定位置
g [地址|函数名]
执行到指定位置gh [地址|函数名]
执行到指定位置,如遇到异常则中断gn [地址|函数名]
执行到指定位置,如遇到异常则忽略
- 断点
Ctrl+Break
中断当前运行bl
列出已设置断点be [断点ID]
激活断点bd [断点ID]
禁用断点bc [断点ID]
清除断点bp [地址|函数名]
设置断点
- 数据展示
d [地址]
显示内存数据db [地址]
按字节显示内存数据dd [地址]
按双字节显示内存数据
- 数据编辑
e [地址] [数据]
修改任意内存地址的值
- 栈的显示
k [x]
打印调用栈,x为需要回溯的栈帧数kb [x]
打印调用栈,并额外显示3个传递给函数的参数
- 模块显示
lm
列出已经读入的所有模块lmvm [name]
查看模块的详细信息x
查找符号的二进制地址
- 反汇编功能
u
反汇编当前执行的后几条指令并显示u [起始地址]
从指定的地址开始反汇编u [起始地址] [终止地址]
反汇编指定区间的汇编代码
重载 .reload
帮助 .help
清屏 .cls
开启DML帮助 .prefer_dml 1
- 设置符号地址
.sympath <path>
.sympath+ srv*<path>*http://msdl.microsoft.com/download/symbols
- 进程信息
.tlist
!process 显示调试器当前运行进程信息
!process 0 显示进程列表
!process <pid> 显示进程信息
!peb <address> 查看Process Enviroment Block
- 线程信息
~ 显示线程信息
~ <thread id> 切换
!teb <address> 查看TEB信息
.ttime 查看线程时间
- 异常信息
.exr
.exr -1 约等于 .lastevent
.bugcheck 显示当前bug check的详细信息,用于调试crash
!analyze 分析最近的异常事件
- 错误信息
!error <eid> 获取错误码为eid的Win32错误信息
!gle get last error