- by yejinlei
-
为什么是WinDbg?
- 微软团队用于开发Windows
- 比Visual Studio debugger更强大
- 通过DLLs扩展功能
-
Windows操作系统调试引擎的一部分
(dbgeng.dll和dbghelp.dll)
-
调试帮助库dbgeng.dll
- 进程转储
- 堆栈跟踪
- 符号处理
- 镜像信息
-
断点相关
- bl //列出所有断点
- bc * //删除所有断点
bc # //删除指定断点
- bd * //所有断点无效
bd # //指定断点无效
- ba w4 addr //内存断点,w代表写,4字节
- bu //预设断点
- bp `mod!source.c:12`
bp mod!myFunc*
bp @@c++( MyClass::MyMethod )
~1 bu kernel32!LoadLibraryExW
-
栈相关
- .kframes # //设置堆栈深度,默认20
- kd # //显示原始堆栈数据和符号信息
- kb
kp
kP
kv
- kM //切换帧并显示参数和局部变量,等同.frame n;dv
- .frame n //切换帧
- ~*k //所有线程调用栈
~0k //显示0线程调用栈
- !uniqstack //显示所有线程的调用栈
-
变量相关
- dv //显示参数和局部变量
- dt //显示函数声明
- e addr value //修改变量值
- dd 地址/变量 //显示地址内容,包括变量
- CTRL+ALT+V
-
汇编相关
- u 地址 //反汇编
- uf 地址 //反汇编整个函数
-
线程相关
- !teb
- ~ //显示所有线程状态
~* //显示所有线程状态及扩展信息
~0 //显示0线程状态
~.//显示当前线程状态
- ~0s //切换到0线程
- !runaway //显示线程运行时间
- !gle [-all] //显示错误码,GetLastError
-
内存相关
- dd
- da //字符形式显示内存内容
- db //字节方式显示,同时字符
- !vadump //显示所有的虚拟内存区域
- !vprot addr //显示保护内存状态
-
模块相关
- lm
-
其他
- .cls //清屏
-
数值相关
- n //显示数值进制,默认16
n 10 //设置10进制
- 0x //16进制
0n //10进制
0t //8进制
0y //2进制
.formats 10 //按不同制式格式显示10
-
堆相关
- !heap -p -all
- !heap -stat
-
临界区相关
- !avrf
- !cs
- !locks
- 别名相关