工具: winbdg

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

  工具下载: WinBdgTool.zip

  测试代码下载 : MyDumpTest.7z

  首先添加设定符号文件路径(Symbol Path),当你使用Visual Studio编译程序时,是否有留意到在bin/Debug文件夹下会有.pdb后缀的文件?这些文件包含有dll程序集的调试符号,pdb文件并不包含有执行代码,只是使调试工具能把代码执行指令翻译为正确的可识别字符。微软提供了包含大量pdb文件的公共服务器,地址如下:http://msdl.microsoft.com/download/symbols。打开windbg程序,选择“File->Symbol File Path…“,把下面的内容复制进去保存。srv*c:\temp*http://msdl.microsoft.com/download/symbols。

  

  下面这行命令 如果你发现出现Unable to verify checksum...或者的消息 那是因为你没有添加.net的sos扩展或者sos的版本没有对应上。.Net1.1时代的SOS扩展已经自带于下载安装的WinDBG中,从.Net2.0以后,SOS扩展已经自带到.Net框架中:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\SOS.dll,为了不至于引起混淆,最好的方法就是使用前面的loadby调试器元命令来让WinDBG自己决定加载什么版本的SOS。

  添加sos:.load C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\sos.dll。

  加载SOS后,使用命令.chain来查看调试链中是否已经成功包含SOS扩展。

  

  通过!eeversion查看sos的版本号。

  

  实战命令: ~ 查看线程

  

  这表明当前dump里记录的线程数。如果要切换线程,用波浪线+序号+s来切换,如切换到线程2,那么用~2s即可。

  lm 查看你加载的模块

  

  kb 查看native code调用栈

  用~现在只有线程信息,对于每个线程,在被抓的那一刻,在执行什么,我们有命令:kb。

  

  看到clr大家应该很眼熟吧。这里已经可以看到较详细的调试信息了。

  !runaway    (查看线程对应 CPU 运行时间)

  

  因为我们的测试程序是测试的是线程阻塞所以我们选一个运行时间为0的,例如415

  

  !dso 查看这个堆栈中的对象

  

  !clrstack 查看这个线程的托管代码调用栈

  

  通过上面我们已经可以看出这个线程一直都是处于阻塞状态。

  到这里基本上一个小的测试程序可以告一段落了,当然windbg的功能远远不止如此,这里分享一些资源给大家。

  资源下载 : WinDbg入门.rar  Windbg用法详解.7z

dump分析器winbdg的更多相关文章

  1. Memory Dump 分析器

    Visual Studio 2013 新功能 Memory Dump 分析器   TechEd2013 发现新功能 12月5日和6日,在国家会议中心参加了微软的 TechEd2013 技术大会,了解了 ...

  2. Visual Studio 2013 新功能 Memory Dump 分析器

    本文为 Dennis Gao 原创技术文章,发表于博客园博客,未经作者本人允许禁止任何形式的转载. TechEd2013 发现新功能 12月5日和6日,在国家会议中心参加了微软的 TechEd2013 ...

  3. java性能分析工具

    jcmd:向JVM发送诊断的命令,jvm未必会全部响应,有些需要在jvm开启相应功能才能响应.个人平时用的不是很多. SampleA: 添加        jcmd pid VM.native_mem ...

  4. 面向.Net程序员的dump分析

    背景 Dump文件是进程的内存镜像.可以把程序的执行状态通过调试器保存到dump文件中.在 Windows 系统上, dump 文件分为内核 dump 和用户态 dump 两种.前者一般用来分析内核相 ...

  5. Java heap dump触发和分析(转)

    为了分析java应用的内存泄漏,使用thread dump往往解决不了问题.使用jstat[eg:jstat-gcutil pid 1000 5]工具查看运行的java应用的heap size,per ...

  6. Windbg DUMP分析(原创汇总)

    1. 引入篇 所谓技术分享,其实是一个自我总结和相互学习.不断成长的过程. 考虑到之前原创的文章http://www.cnblogs.com/LoveOfPrince/p/6032523.html&l ...

  7. 使用Crash工具分析 Linux dump文件【转】

    转自:https://blog.csdn.net/bytxl/article/details/45025183 前言 Linux 内核(以下简称内核)是一个不与特定进程相关的功能集合,内核的代码很难轻 ...

  8. 深入详解美团点评CAT跨语言服务监控(七)消息分析器与报表(二)

    CrossAnalyzer-调用链分析 在分布式环境中,应用是运行在独立的进程中的,有可能是不同的机器,或者不同的服务器进程.那么他们如果想要彼此联系在一起,形成一个调用链,在Cat中,CrossAn ...

  9. 使用 Crash 工具分析 Linux dump 文件

    转自:http://blog.csdn.net/commsea/article/details/11804897 简介: Linux 内核由于其复杂性,使得对内核出现的各种异常的追踪变得异常困难.本文 ...

  10. Python的Profilers性能分析器

    关于Python Profilers性能分析器 关于性能分析,python有专门的文档,可查看:http://docs.python.org/library/profile.html?highligh ...

随机推荐

  1. Chrome 安装 Vue Devtools 调试工具

    源码下载地址:https://github.com/vuejs/vue-devtools Make sure you are using Node 6+ and NPM 3+ Clone this r ...

  2. Sublime Ctrl+B 编译输出乱码

    1.输入乱码如图 2.Preferences -> Browse Packages.. 3.加入  "env": { "PYTHONIOENCODING" ...

  3. JS 实现 HashMap

    HashMap代码(这种实现方式是错误的,错误原因:代码中_map._length变量是HashMap的所有实例共用的): /** * HashMap * 2021年09月09日 */ (functi ...

  4. 【题解】Qin Shi Huang's National Road System HDU - 4081 ⭐⭐⭐⭐ 【次小生成树】

    During the Warring States Period of ancient China(476 BC to 221 BC), there were seven kingdoms in Ch ...

  5. Tomcat 9.0.26 高并发场景下DeadLock问题排查与修复

    本文首发于 vivo互联网技术 微信公众号 链接:https://mp.weixin.qq.com/s/-OcCDI4L5GR8vVXSYhXJ7w作者:黄卫兵.陈锦霞 一.Tomcat容器 9.0. ...

  6. jdk(jvm)调式工具

    JConsole 可视化工具介绍一. JConsole介绍1.1 JConsole描述Jconsole (Java Monitoring and Management Console),一种基于JMX ...

  7. 密码加密bcrypt

  8. 写了个移动端可滑动(惯性滑动&回弹)Vue导航栏组件 ly-tab

    https://www.imooc.com/article/23768?block_id=tuijian_wz https://blog.csdn.net/weixin_44614772/articl ...

  9. 05-Verilog基础语法_4

    Verilog基础语法 Mixed Model(混合设计模型) System Tasks(系统任务,系统函数) 用随机数驱动验证 fd = $fopen("文件路径及文件名") / ...

  10. 【一文秒懂】Ftrace系统调试工具使用终极指南

    [一文秒懂]Ftrace系统调试工具使用终极指南 1.Ftrace是什么 Ftrace是Function Trace的简写,由 Steven Rostedt 开发的,从 2008 年发布的内核 2.6 ...