zoukankan      html  css  js  c++  java
  • WinDbg使用摘要

    1、如何抓取dump文件。

    这要分两种情况:

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

    第二种情况: 对于win2k3操作系统是没有上面说到的功能的,当然上面的方法也是不完善的,因为它不能在程序崩溃的那一刻抓取到最适合的dump文件。可以通过adplus命令来抓取。例如:

    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 : 指定配置文件

    #配置环境变量:
    计算机-->属性-->高级-->环境变量-->系统环境变量-->
    _NT_SYMBOL_PATH          C:"Windows"symbols
    为Path系统环境变量增加C:\Program Files\Debugging Tools for Windows (x86)\

    #还能通过指定配置文件来灵活使用adplus,例如可以指定clr发生某种异常时记录dump等。

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

    #注意:当运行adplus抓取dump后,对应的w3wp.exe进程将会自动回收重启新的进程

    2、分析dump文件。

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

    相关链接:
    Windbg 用法
    如何安装WinDbg并得到第一个dump文件

    WinDbg初始体验,问题来了怎么办?
    WinDbg初始体验2,抓住不放的恶棍(OutOfMemory案例分析Ⅰ)
    WinDbg初始体验3,剪不断的铁链(OutOfMemory案例分析Ⅱ)

  • 相关阅读:
    IM 融云 之 初始化及登录
    IM 融云 之 安装cocoapods 安装 SDK
    github desktop 下载
    iOS 架构模式
    IM 融云 之 通讯能力库API
    IM 融云 之 开发基础概念
    IM 之 融云
    php获得文件的属性
    js模拟复制
    linux修改yum源
  • 原文地址:https://www.cnblogs.com/chenjunbiao/p/1760195.html
Copyright © 2011-2022 走看看