日期:2014-05-16  浏览次数:20472 次

WinDbg-如何抓取dump文件

WinDbg-如何抓取dump文件

?

?

在工作时候,有时会出现经常用的软件突然停止响应,比如聊天工具飞信停止响应,我们只能通过结束进程来暂时解决问题。要找到问题,可以通过抓取内存dump来分析下

第一种情况

? ? ? 如果是Vista或者是Windows2008操作系统就是一个简单的事情,在任务管理器中,切换到<进程>选项卡,右键点击你想要创建dump文件的进程,然后选择<Create Dump File>即可。如果你想要创建dump文件的进程是w3wp.exe,可能会看到有很多w3wp,但不知道哪一个是你要要抓的网站,可以通过下需的命令查看,对于vista或win2008系统使用:%windir%/system32/inetsrv/appcmd list wp

?

第二种情况

而对于win2k3系统,你可以使用iisapp来查看。

adplus -hang -pn w3wp.exe -o c:\dumps
该命令立刻把w3wp.exe的full dump抓取到c:\dumps文件夹内。
adplus -hang -p 81388 -o c:\dumps
该命令立刻把81388这个进程的full dump抓取到c:\dumps文件夹内。
adplus -crash -pn w3wp.exe -fullonfirst -o c:\dumps
adplus -crash -p 81388 -fullonfirst -o c:\dumps
该命令会通过监视进程w3wp.exe或81388的运行,在当第一次出现异常时记录一次完整的dump
adplus -crash -pn w3wp.exe? -o c:\dumps
该命令也是在w3wp.exe崩溃时记录dump,但这是一个mini dump
#一些常用的参数:
-Crash:表示我捕捉的是一个Crash dump。
-p:指定要捕捉的进程ID。 -IIS表示我们捕捉IIS的所有进程。
-quiet:不弹出提示窗口
-fullonfirst:表示我希望在first chance时捕捉完整的dump信息,也就是进程的所有完整信息。
-o :后面跟着dump文件的存放路径
-c : 指定配置文件
#配置环境变量:
计算机--&gt;属性--&gt;高级--&gt;环境变量--&gt;系统环境变量--&gt;
_NT_SYMBOL_PATH????????? C:&quot;Windows&quot;symbols
为Path系统环境变量增加C:\Program Files\Debugging Tools for Windows (x86)\

#解决在抓取dump过程出现&quot;ActiveX 部件不能创建对象: 'Wscript.shell'&quot; 错误的方法,运行如下命令:
regsvr32 %windir%&quot;system32&quot;WSHom.Ocx

2、分析dump文件。
?? 0:000&gt; .load C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\SOS.dll? //加载调试模块
?? 0:000&gt;!eeheap -gc?????????????????????????????????? //查看托管堆的情况(包括大小)
?? 0:000&gt;!dumpheap -min 85000 -stat????????? //显示大小大于85000的对角的统主信息
?? 0:000&gt;!dumpheap -min 85000????????????????? //显示大小大于85000的对角的统主信息???????????????
?? 0:000&gt;!dumpheap -stat?????????????????????????? //该命令显示程序中所有对象的统计信息,显示的大小是对象本身的大小,不包括对象里面值的大小
?? 0:000&gt;!gcroot 0x34e9bee0????????????????????? //来显示一个实例的所属关系
?? 0:000&gt;!dumpheap -mt 790fcb30????????????? //该命令显示MethodTable 790fcb30的详细信息
?? 0:000&gt;!DumpArray???????????????????????????????? //查看数组信息
?? 0:000&gt;!ObjSize 012a1ba4?????????????????????? //对象实际在内存中的大小
?? 0:000&gt;lm????????????????????????????????????????????? //查看加载了哪些模块
?? 0:000&gt;!dumpmt -md 00976d48????????????? //得到类的成员函数详细信息

?