windbg常用命令

1. 基本调试命令

1.1启动和附加

windbg -pn : 按进程名称启动调试。
windbg -p : 按进程 ID 启动调试。

1.2 控制执行

g: 继续执行程序。
p: 单步执行,不进入函数。
t: 单步执行,进入函数。
bp <Address>: 在指定地址设置断点。
bl: 列出所有断点。
bc : 清除指定断点。

1.3 查看内存和寄存器

r: 显示寄存器内容。
r <Register>: 显示指定寄存器内容。
dd <Address>: 以双字(DWORD)格式显示内存内容。
dc <Address>: 以字符格式显示内存内容。
dp <Address>: 以指针格式显示内存内容。
db <Address>: 以字节格式显示内存内容。

查看寄存器内容示例:

0:000> r
rax=0000000000000001 rbx=0000000000000002 rcx=0000000000000003
rdx=0000000000000004 rsi=0000000000000005 rdi=0000000000000006
rip=00007ff6a0b10e5a rsp=00000000005ff8f8 rbp=00000000005ff900
 r8=0000000000000007  r9=0000000000000008 r10=0000000000000009
r11=000000000000000a r12=000000000000000b r13=000000000000000c
r14=000000000000000d r15=000000000000000e
iopl=0         nv up ei pl nz na pe nc
cs=0033  ss=002b  ds=002b  es=002b  fs=0053  gs=002b             efl=00000202

查看特定寄存器内容:

0:000> r rax
rax=0000000000000001

1.4 查看堆栈

k: 显示当前堆栈调用。
kb: 显示带参数的堆栈调用。
kp: 显示带参数和调用约定的堆栈调用。
模块和符号

lm: 列出加载的模块。
lmv: 列出加载的模块及其详细信息。
.reload: 重新加载符号。
x <Module>!<Symbol>: 查找符号。

5. 查看变量

dv: 显示局部变量。
dt <Type>: 显示类型信息。
dps <Address>: 显示指针和符号。
输入/输出
!handle: 列出当前进程的句柄。
!process: 列出当前系统的进程。
!thread: 列出当前进程的线程。
!heap: 显示堆信息。

2. 高级调试命令

2.1 调试扩展

!analyze -v: 分析崩溃转储文件。
!locks: 显示系统中的锁。
!vm: 显示虚拟内存信息。
!poolused: 显示池使用情况。

2.2 脚本和自动化

.scriptload : 加载 JavaScript 脚本。
.scriptrun : 运行 JavaScript 脚本。
.foreach (variable {expression}) {commands}: 在表达式结果上循环执行命令。

2.3 调试器命令

.logopen : 打开日志文件。
.logclose: 关闭日志文件。
.cls: 清除调试器窗口。

2.4 内核调试

!process 0 0: 列出所有进程。
!thread <ThreadAddress>: 显示线程信息。
!drvobj <DriverName>1: 显示驱动程序对象信息。

常用快捷键

F5: 继续执行程序(相当于 g)。
F10: 单步执行,不进入函数(相当于 p)。
F11: 单步执行,进入函数(相当于 t)。
Ctrl+Break: 中断程序执行。

这些命令只是 WinDbg 功能的冰山一角。WinDbg 提供了大量的命令和扩展,用于各种调试需求。建议结合具体的调试场景,查阅 WinDbg 官方文档和帮助文件,以充分利用其强大功能。
(未完待续)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值