windebug使用笔记
打开WinDbg,配置各路径
Symbol File Path(.pdb文件目录路径)
srvD:\symbolshttp://msdl.microsoft.com/download/symbols
Source File Path(源代码文件目录路径)
C:\Users\Administrator\Desktop\ConsoleApplication1
Image File Path(可执行文件目录路径)
C:\Users\Administrator\Desktop\ConsoleApplication1
打开.dump文件
点击菜单File/Open Crash Dump
载入 SOS.dll扩展命令模块
执行命令:.load C:\Windows\Microsoft.NET\Framework64\v4.0.30319\sos.dll
.loadby sos clr
查找CPU占用过高的根源
执行 !threadpool 看是否是问题根源
!threadpool
!clrstack -p 查看参数内容
执行 !runaway 看线程的执行时间
执行 ~4 s 将当前线程切换到线程4
执行 !clrstack 显示当前线程的调用堆栈
执行 !eeheap -gc 查看托管堆的总信息
执行 !dumpheap -min 200 -stat 获取占用堆内存的各对象的统计信息
执行 !dumpheap -type Byte[] -min 200 看各Byte数组占用堆内存的详细信息
执行 !gcroot <Byte数组对象地址> 看对象引用关系
执行 !do <Program对象地址> 查看对象的详细信息
执行 ~*e !clrstack !EEStack -EE 查看堆栈详细信息
.cordll -lp D:\dll 加载指定路径文件夹下的clr.dll
抓取dump
adplus -crash -pn w3wp.exe -NoDumpOnFirst
Adplus参数说明
-pn : 指定要分析的进程名。使用多个“-pn process name”开关来指定多个进程。
-o : dump file的存储路径,缺省为adplus所在路径
-FullOnFirst : create full dumps on first chance exceptions
-MiniOnSecond
-NoDumpOnFirst : 如果exception被try-catch block处理,使用这个参数就不会生成dump file
-NoDumpOnSecond :
-quiet : No dialog boxes will be displayed