软件调试windbg

转载 2015年07月06日 16:44:56

一、简介

  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

相关文章推荐

windows程序员进阶系列:《软件调试》之O--- WinDbg使用介绍

windows程序员进阶系列:《软件调试》之O--- WinDbg使用介绍    拥有一个顺手的武器是每一个武林高手梦寐以求的。对于windows程序员来说,WinDbg调试器就是我们的武器。...
  • ithzhang
  • ithzhang
  • 2013年03月03日 13:02
  • 24179

Windbg调试软件系统崩溃

一、Windbg简介 WinDBG是一个非常强大的调试器,它设计了极其丰富的功能来支持各种调试任务,包括用户态调试,内核态调试,调试转储文件,远程调试等。WinDBG具有非常大的灵活性和可扩展性,用来...

windows程序员进阶系列:《软件调试》之O--- WinDbg使用介绍

windows程序员进阶系列:《软件调试》之O--- WinDbg使用介绍      拥有一个顺手的武器是每一个武林高手梦寐以求的。对于windows程序员来说,WinDbg调试器就是我...
  • wxdvc
  • wxdvc
  • 2013年03月07日 11:31
  • 1036

Windbg软件调试相关资料

  • 2010年06月12日 00:38
  • 4.44MB
  • 下载

软件调试系列之Windbg探究

转载于:http://blog.csdn.net/cuiweican/article/details/7352828 套用80/20原则,我们大部分时候只使用了Windbg的20%功能,当然我没...
  • zgmzyr
  • zgmzyr
  • 2012年03月18日 09:03
  • 702

windows程序员进阶系列:《软件调试》之O--- WinDbg使用介绍

拥有一个顺手的武器是每一个武林高手梦寐以求的。对于windows程序员来说,WinDbg调试器就是我们的武器。熟练使用调试器能大大提高我们的调试能力。本博文将详细介绍涉及到WinDbg调试器的基本使用...

软件调试及windbg应用

  • 2017年11月16日 10:07
  • 547KB
  • 下载

软件调试-WinDBG用法详解(PDF文字版)

  • 2017年09月11日 10:27
  • 1.32MB
  • 下载

玩转windbg软件调试视频教程发布-windbg入门教程

【课程介绍】 工作过可能经常遇到以下场景 程序崩溃、内存泄漏、线程死锁,测试过程中你的缺陷总比别人多,虽然也做了自测,但仍然会出现一些很严重的缺陷, 问题原因始终无法定位。现场出现dump。。。眼看截...

windbg软件

  • 2014年07月25日 16:08
  • 16.03MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:软件调试windbg
举报原因:
原因补充:

(最多只允许输入30个字)