调试会话
.create :创建新的进程并调试 例子 .create notepad.exe
.attach:附加到指定进程 例子 .attach 2568
.restart:让调试目标重新运行 例子 .restart 或者.restart /f
.crash:强制目标系统崩溃(内核态) 例子 .crash
.reboot:重启目标系统(内核态) 例子 .reboot
.detach:分离调试目标 例子 .detach
q:终止调试 例子 q
模块和符号
.symfix:设置符号服务器 例子 .symfix c:\symbols
.reload:刷新模块和符号 例子 .reload 或者.reload /f
ld:加载符号文件 例子 ld kernel32
.sympath:显示或者设置符号路径 例子 .sympath 或者.sympath+d:\sym\
!sym:显示符号选项 例子 !sym noisy 或者!sym quiet
x:显示符号 例子 x VAXPlayer!* 显示vaxplayer库中所有的符号
ln:搜索符号 例子 ln aebc6eac(可以查找符号来对应动态库)
lm:列模块或显示模块详情 例子 lm (可以查看对应的pdb文件) lmf(可以查看程序运行的时候对于的dll信息)
!lmi :模块或pdb文件详情 例子 !lmi ntdll
!dlls:动态库信息 例子 !dlls -a
!dh:观察PE文件头 例子 !dh 76930000 -a
转储文件
.dump :产生转储文件 例子 .dump /mfh c:\a.dmp
!analyze:自动分析 例子 !analyze -v
.writemem:将内存数据写到文件 例子 .writemen c:\dump\test.txt 07288600 L2000
进程
|:显示或切换进程(用户态) 例子 |* 或者|2s
!process:显示进程 例子 !process 0 0
!dml_proc:观察进程信息 例子 !dml_proc $$以DML方式显示进程信息
.process:显示或切换进程(内核态) 例子 .process /i 9382a560
.kill:杀进程 例子 .kill 8adc85f0
!peb:观察进程信息 例子 !peb
dt:观察数据结构 例子 dt ntdll!_PEB@$peb -r
.tlist:列进程 例子 .tlist 列出调试器所在系统的所有进程
线程
~:显示/切换线程 例子 ~*显示所有线程 ~2s切换到2号线程
!teb:显示线程块 例子 !teb
.thread: 显示或切换线程(内核态) 例子 .thread 80551d20 或.thread /p 8747da8
!thread:观察线程(内核态) 例子!thread
!wow64exts.info:运行在64bit系统的32bit线程信息 例子 !wow64exts.info
!wow64exts.sw:32bit和64bit调试器切换 例子 !wow64exts.sw
内存
!address:观察内存空间 例子 !address
!address:观察内存块属性 例子 !address 0728988a
d:显示内存数据 例子 db e2001744
dt:按类型显示内存数据 例子 dt _GUID 014511471
e:编辑内存数据 例子 eb 00175487 ff
!dd:读取物理地址 例子 !dd fffffff0
!ed:写物理地址 例子 !ed fffffff0 8000
!vtop:虚拟地址转换为物理地址 例子 !vtop 0 badfde064
!pte:显示页表项 例子 !pte f6551410
!memusage:显示物理内存使用情况 例子 !memusage
!pool:显示内核池信息 例子 !pool e326c000
!vad:观察进程的地址空间 例子 !vad 8a761451
!sdbgext.hwnd:观察窗口句柄 例子 !sbdgext.hwnd 001506c1
堆
!heap:显示堆信息 例子 !heap 01671010 -a
栈
k:函数调用序列 例子 ~*kbn
.frame :切换当前栈帧 例子 .frame 2
dds:显示数据和符号 例子 dds 80418424
dv:显示局部变量 例子 dt
寄存器
r:读写寄存器 例子 r cr3
rdmsr:读取MSR寄存器 例子 rdmsr 19c
上下文
.ecxr:切换到异常上下文 例子 .ecxr
.tss:切换到指定TSS 例子 .tss 28
.trap:切换到陷阱栈 例子 .trap 80541471
.effmach:切换32和64bit上下文 例子 .effmach X86
断点
bp:软件断点 例子 bp test!test.cpp:65
ba:硬件断点 例子 ba w4 00006484
bm:成批设置断点 例子 bm /a nt!Dbgk*
bd/be/bc/dl:管理断点
执行和跟踪
g:恢复执行 例子 g
p:单步执行 例子 p
t:单步跟踪 例子 t
wt:自动跟踪 例子 wt -l 3
反汇编
u:反汇编 例子 u nt!PsGetcutrentID
uf:反汇编整个函数 例子 uf RtlLeaveCriticalSection
ub:反向反汇编 例子 ub 14785214
a :汇编 例子 a<地址>
死锁
!locks:扫描关键区(用户态)或ERESOURCE(内核态) 例子 !locks
!cs:观察关键区 例子 !cs -l
!alpc:观察ALPC端口 例子 !alpc /m 02145895
处理器
!pcr:管理处理器控制区 例子 !pcr
dg:观察段描述符 例子 dg @fs
!cpuid:显示CPU型号 例子 !cpuid
!cpuinfo:显示cpu属性(内核态) 例子 !cpuinfo
!irql:显示保存的IRQL