加载PDB
srv*d:\symbols*http://msdl.microsoft.com/download/symbols
!symPath c:\debug\
!sympath+ c:\debug\
加载SOS
0:004> .load c:\Windows\Microsoft.NET\Framework\v2.0.50727\SOS.dll |
0:004> .load c:\Windows\Microsoft.NET\Framework\v4.0.30319\SOS.dll |
Framework 1.0 & 2.0 & 3.0 & 3.5 | Framework 4.0 & 4.5 |
.loadby sos mscorwks | .loadby sos clr |
与内存操作相关命令
正是查看GC堆得命令,查看GC堆上的内存占用是多大
!eeheap –loader:正是查看Loader堆得命令
!dumpheap –stat:就是GC堆上的统计,就看看GC堆上存活的对象是那些
!dumpheap -mt <<MethodTable address>>:查看该地址上的对象
!dumpheap –type:通过 type 参数查看内存中指定类型的对象
!dso 查看当前线程里有哪些对象,分析内存泄漏问题也许会用到
!gcroot +对象地址:这个命令就可以得到这个对象的"根"
!objsize +对象地址:查看对象占用多大的内存
!name2ee TestClass.exe TestClass.Program.test ://显示test方法相关的地址
!name2ee *!TestClass.Program.test ://查看所有地址
!dumpmt -md 00976d48 ://得到类的成员函数详细信息
!dumpmt:找到相关MethodTable处的相关信息。
!dumpmd:根据MethodDesc找到相关模块信息,比如MethodTable.
!dumpdomain:显示所有域里的程序集,或者根据参数获取指定域。
!dumpil 00973028:// 显示这个方法被编译器编译之后的IL代码
!dumpobj(do) 012a3904: //显示一个对象的具体内容,看对象里面有什么,值是什么
!dumpmodule 1ee30010:查看某个模块的详细信息
!DumpArray: //查看数组信息
CPU+异常操作相关命令
!threadpool:查看线程池CPU使用量,我认为WEB的比如iis应用程序池进程w3wp如果CPU使用过高,那查看线程池命令肯定看的出来过高,这个是我自己的理解,c/s的就不一定了。
!threads:查看所有托管线程情况
!clrstack:到具体某个线程后,本线程托管代码的调用栈情况!cl
~* e !clrstack:所有线程托管代码的调用栈情况
!runaway:查看线程占用CPU时间,可以从中找到哪个线程占用时间更高。
~number s:number为具体哪个线程的ID。
!dumpstackobjects(!dso):本线程调用栈所有对象实例
!dumpdomain:显示所有域里的程序集,或者根据参数获取指定域。
!savemodule:根据具体程序集地址,把当前程序集的代码生成到指定文件!
!PrintException:显示在当前线程上引发的最后一个异常错误信息
!StopOnException:在指定异常错误信息停止运行
!VerifyHeap:检查垃圾回收器堆中是否有损坏迹象,并显示找到任何错误
!SyncBlk –all:显示所有SyncBlock 结构情况
!for_each_frame dv /t 打印出错函数的局部变量,找出元凶。
!analyze -v
dump文件获取
为Hang住的情况抓Dump:
adplus -hang -pn w3wp.exe -quiet -o C:\dumps 为所有的w3wp.exe进程创建dump到C:\dumps
adplus -crash -pnMemLeakProfileDemo.exe -quiet -o c:\dump
adplus -hang -p1244 为进程ID为1244的进程创建内存转储文件.
adplus -hang–IIS 为所有跟IIS相关的进程(比如w3wp.exe, inetinfo.exe, aspnet_wp.exe 和dllhost.exe)创建内存转储文件.
为Crash的情况抓Dump:
adplus -crash -pnw3wp.exe 在崩溃的时候为所有的w3wp.exe进程创建内存转储文件
adplus -crash -p1244 在进程ID为1244的进程崩溃的时候为它创建内存转储文件
adplus -crash–IIS 为所有跟IIS相关的进程(比如w3wp.exe,inetinfo.exe, aspnet_wp.exe 和dllhost.exe)创建崩溃时的内存转储文件.