!analyze -v 查看崩溃分析,会打印堆栈
!address –summary查看内存占用
STACK_COMMAND: ~0s; .ecxr ; kb
~0 k表示打印0号线程的调用堆栈,直接用k表示打印当前线程的调用堆栈
kb显示前3个参数
kc只显示调用栈的模块名和地址(不显示调用栈的地址)
kd直接显示所有的栈情况 例: kd 8
KD,用于显示Stack的Dump,在跟踪栈时比较有用。
Kp显示所有的参数,但需要Full Symbols或Private PDBSymbols支持。KP与Kp相似,只是KP将参数换行显示了;
Kv用于显示FPO(Frame Pointer Omission)和调用约定;
.ecxr 命令定位当前异常的上下文信息,并显示指定记录中的重要寄存器
~*kv 对所有线程进行kv, 又可能线程比较多,要使用UnhandledExceptionFilter等进行过滤。
线程命令:
~ 简洁地显示当前进程的所有线程,
~. 表示当前线程
~# 表示异常或者产生调试事件的线程
~* 表示所有线程
~1表示一号线程
~2 s 表示选择
2号线程作为当前线程
~3 f 冻结三号线程
~3 u 解冻三号线程
~2 n 挂起二号线程
~2 m 恢复二线程
~*e !clrstack 遍历每个线程, 依次输出它们的托管调用栈
. !threads 查看所有的托管线程
Filter 值 显示的内存状态
MEM_COMMIT 当前已提交给目标使用的所有内存。已经在物理内存或者页面文件中为这些内存分配了物理的存储空间。
MEM_RESERVE 所有为目标以后的使用保留的内存。这种内存还没有分配物理上的存储空间。
MEM_FREE 目标虚拟地址空间中所有可用内存。包括所有未提交并且未保留的内存。该Filter 值和RegionUsageFree一样。