关闭

软件调试windbg

507人阅读 评论(0) 收藏 举报

一、简介

  1. WinDbg

Windbg是在windows平台下,强大的用户态和内核态调试工具。相比较于Visual Studio,它是一个轻量级的调试工具,所谓轻量级指的是它的安装文件大小较小,但是其调试功能,却比VS更为强大。它的另外一个用途是可以用来分析dump数据。

Windbg是Microsoft公司免费调试器调试集合中的GUI的调试器,支持Source和Assembly两种模式的调试。Windbg不仅可以调试应用程序,还可以进行Kernel Debug。结合Microsoft的Symbol Server,可以获取系统符号文件,便于应用程序和内核的调试。Windbg支持的平台包括X86、IA64、AMD64。

虽然windbg也提供图形界面操作,但它最强大的地方还是有着强大的调试命令,一般情况会结合GUI和命令行进行操作,常用的视图有:局部变量、全局变量、调用栈、线程、命令、寄存器、白板等。其中“命令”视图是默认打开的。

     2、DebugDiag

       DebugDiag最初是为了帮助分析IIS的性能问题而开发的,它同样可以用于任何其他的进程。DebugDiag 工具为了帮助解决问题,例如挂起、 速度慢、 内存泄漏或内存碎片,和任何用户模式进程崩溃。该工具包括附加调试脚本,侧重于互联网信息服务 (IIS) 应用程序、 web 数据访问组件、 COM + 和相关 Microsoft 技术、 Sharepoint 和.NET。它提供可扩展对象模型中的 COM 对象的形式,并具有一个内置的报告框架提供的脚本主机。它由以下 3 部分组成: 一个调试服务、 调试器主机和用户界面.

     3、ProcDump

      ProcDump是System Internal提供的一个专门用来监测程序CPU高使用率从而生成进程dump文件的工具。ProcDump可以根据系统的CPU使用率或者指定的性能计数器来针对特定进程生成一系列的dump文件,以便调试者对事故原因进行分析。

二、下载安装

     1、WinDbg下载

      x86位版本下载:【微软官方安装版

      x64位版本下载:【微软官方安装版

     2、DebugDiag下载:【微软官方下载】

     3、ProcDump下载:【微软官方下载】


========================

 B、WinDbg的adplus获取Dump文件。这样获取的是FullDump.

到命令行下,切换到windbg目录如:C:\Program Files (x86)\Windows Kits\8.1\Debuggers\x64,执行adplus -hang -pn WindbgHighCpu.exe -o E:\dumps


C、通过ProcDump抓取异常线程Dump文件

      使用方法

命令行

procdump [-64] [[-c CPU usage] [-u] [-s seconds]] [-n exceeds] [-e [1 [-b] [-f filter] [-g]]] [-h] [-l] [-m commit usage] [-ma | -mp] [-o] [-p counter threshold] [-r] [-t] [-d <callback DLL>] <[-w] <process name or PID> [dump file] | -i <dump file> |-x <dump file> <image file> [arguments]> [-? [ -e]]

实例

procdump -c 70 -s 5 -ma -n 3 w3wp

当系统CPU使用率持续5秒超过70%时,连续抓3个full dump。

Procdump outlook -p "\Processor(_Total)\% Processor Time" 80

当系统CPU使用率超过80%,抓取outlook进程的mini dump。

procdump -ma outlook -p "\Process(Outlook)\Handle Count" 10000

当outlook进程handle数超过10000时抓取full dump

procdump -ma 4572

直接生成进程号位4572的full dump。



5. 总结:

1) WinDBG不是专门用于调试.Net程序的工具,它更偏向于底层,可用于内核和驱动调试。进行普通的.Net程序调试还是使用微软专为.Net开发的调试工具VS更方便一些。但是WinDBG能看到更多的底层信息,对于某些特别疑难的问题调试有所帮助,例如内存泄漏等问题。

2) SOS扩展命令中最有用的命令是!help,使用该命令可以列出所有可用的SOS扩展命令列表,使用!help [SOSCommandName]可以查看每一个具体扩展命名的详细使用说明,例如!help dumpheap就可以查看!dumpheap这个扩展命名的具体使用方法。多多利用!help命名可以很快上手SOS。

3) WinDBG本身的资料可以参考 张银奎 先生的《软件调试》一书,另外在互联网上也有非常多的WinDBG资料。

四、参考文档

    1、http://www.windbg.org/

    2、http://www.cnblogs.com/kissdodog/p/3728045.html

http://www.cnblogs.com/gaochundong/p/windbg_cheat_sheet.html

http://www.windbg.info/doc/1-common-cmds.html

http://www.cnblogs.com/kissdodog/category/579272.html



========================================

配置1.E:\work\project\Debug;SRV*D:\WinDBG\WINDOWS\Symbols*http://msdl.microsoft.com/download/symbols
配置2.srv*c:\symbols*http://msdl.microsoft.com/download/symbols

2.加载SOS
.load  C:\Windows\Microsoft.NET\Framework64\v4.0.30319\SOS.dll
3.32位windbg分析iis占用CPU百分百
.load C:\Windows\Microsoft.NET\Framework\v4.0.30319\sos.dll

.loadby sos mscorwks
!threadpool
!runaway
~*e!clrstack

!clrstack
~22 s \\定位到线程22
!clrstack
!dso

---------------------------
!dumpheap -stat //all .net objects statistics
!dumpheap -mt 11111111111  -min 80000 -max 90000 -stat //object size statistic
!dumpheap -mt 222222222  -min 80000 //object in range addres list
!EEHeap -gc

==================
.?
.help
!help
.chain

 !clr10\sos.help 

找计数器:typeperf -qx |find "Proc" |find "_Total" |find "% Proc"

下表列出了可用于重定向输入和输出数据流的操作符。

     重定向操作符          描述
          >                       将命令输出写入到文件或设备(如打印机),而不是命令提示符窗口或句柄。
          <                       从文件而不是从键盘或句柄读入命令输入。
          >>                     将命令输出添加到文件末尾而不删除文件中已有的信息。
          >&                   将一个句柄的输出写入到另一个句柄的输入中。
          <&                     从一个句柄读取输入并将其写入到另一个句柄输出中。

          |                      从一个命令中读取输出并将其写入另一个命令的输入中。也称作管道。


  typeperf -qx -o d:\counters.txt


================
!EEHeap -gc //是否有大对象
!dumpheap -min 85000 -stat //找到类型
!dumpheap -type Byte[] -min 85000 //找到地址,类型区分大小写
!gcroot 022d3250 //找到引用对象的地址
 !do 012d2e2c //找到对象本身及类说明

-----------------
!runaway //线程和cup时间
~Ns //转到相关线程
!clrstack //看堆栈
!dso //看详情

adplus转储不分32、64位版本


[软件调试].张银奎.扫描版.pdf


http://download.csdn.net/detail/huzhouhzy/5043596
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:1407300次
    • 积分:20210
    • 等级:
    • 排名:第413名
    • 原创:448篇
    • 转载:1067篇
    • 译文:4篇
    • 评论:143条
    文章存档
    最新评论