WinDbg基础(2)——常用指令

来源:互联网 发布:手机实景地图软件 编辑:程序博客网 时间:2024/05/21 12:44

加载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)创建崩溃时的内存转储文件.

原创粉丝点击