WinDbg常用情况(一)

1.WinDbg检测句柄泄露

!htrace –enable 开启句柄检测

!htrace –snapshot 创建进程句柄镜像

!htrace –diff获得当前进程句柄状态与创建进程句柄镜像时候的差异

Lsa handleLeak!ThreadProc1+0x00000037显示具体源码

2.WinDbg检测内存泄露

gflags.exe设置 Enable heap tagging

!heap –s 记录当前堆内存的现状

!heap –s 再次记录堆内存的状态

!heap -stat -h00970000 查看对应堆的具体信息

!heap -flt s 224 查看堆大小为224的堆块使用者

!heap -p -a 00971d20 查看堆引用的位置

Lsa 显示具体源码

 

 

 

3.WinDbg检测高CPU

!runaway 查看线程占用CPU时间

~2s 切换到2号线程

.frame /c  切换栈帧

 

4.WinDbg检测死锁

!locks查看所有锁信息

~*kv显示所有线程

RtlEnterCriticalSection 函数的第一个参数就是请求的锁地址

 

5.Windbg追踪异常

>kv

09a8f644 77ea7e7a 09a8f66c 77e861ae 09a8f674 KERNEL32!UnhandledExceptionFilter+0x2b5 D:/nt/private/windows/base/client/thread.c @ 1753].

>dd 09a8f66c

09a8f66c  09a8f738 09a8f754 09a8f698 77f8f45c

 .exr 09a8f738获得异常值

 .cxr 09a8f754 获得上下文记录

 

6.查看虚表

 x ole32!OpaqueDataInfo::vftable’ 显示虚表的地址

dds Address 自动搜索显示函数

 

6.查看getlasterror的值

!gle 

你可能感兴趣的:(WinDbg,调试)