.NET高级调试系列-Windbg调试入门篇

栏目: IT技术 · 发布时间: 4年前

内容简介:Windbg是.NET高级调试领域中不可或缺的一个工具和利器,也是日常我们分析解决问题的必备。准备近期写2篇精华文章,集中给大家分享一下如果通过Windbg进行.NET高级调试。今天我们来一篇入门的文章。首先,Windbg是什么?Windows Debugger,简称WinDbg,.NET 最强分析调试利器。它可以用来:

Windbg是.NET高级调试领域中不可或缺的一个 工具 和利器,也是日常我们分析解决问题的必备。准备近期写2篇精华文章,集中给大家分享一下如果通过Windbg进行.NET高级调试。

今天我们来一篇入门的文章。首先,Windbg是什么?

Windows Debugger,简称WinDbg,.NET 最强分析调试利器。它可以用来:

  • 调试内核模式和用户模式代码
  • 分析Crash dump
  • 分析代码执行时 CPU 寄存器信息

我们可以通过WinDbg调试以下具体问题:

  • 线程阻塞
  • 内存泄露
  • 分析查询运行时线程堆栈和变量
  • 分析进程Crash原因
  • 分析消耗CPU原因
  • 查看并调试CLR异常

那么,首先我们先进行Windbg下载安装、配置。

一、下载安装WinDbg,配置调试环境

1. 推荐下载链接

https://raw.githubusercontent.com/EasyDarwin/Tools/master/Windbg_x86_x64/dbg_amd64.msi

或者从Windows Store下载 WingDbg Preview版本

.NET高级调试系列-Windbg调试入门篇

下载后一步一步安装即可

2. 配置调试符号

大家会问一个问题:为什么要配置调试符号?

若要使用 WinDbg 提供的所有高级功能,必须加载适当的符号:比如说我们可以调试、查看.NET CLR程序堆栈,此时要加载对应的调试符号。

微软提供了统一的调试服务服务器地址:

http://msdl.microsoft.com/download/symbols,将这个地址提供的调试符号,下载缓存到本地,Windbg调试的时候可以用上。
srv*c:\symcache*http://msdl.microsoft.com/download/symbols;c:\symcache

.NET高级调试系列-Windbg调试入门篇

3. 下载并使用WinDbg调试器扩展

Windbg调试器扩展是Windbg调试的精华和核心,可以这么说,掌握各类Windbg调试器扩展,你就掌握了各类调试技能。

默认情况下,WinDbg的调试指令是有限的,通过一些WinDbg调试器扩展,可以方便我们进行.NET 程序调试

 SOS调试扩展: 随着.NET Framework安装,可以直接加载:  .load sos clr

SOS这个dll在哪里呢(分32位和64位)?

4.0, 32-bit –> C:\Windows\Microsoft.NET\Framework\v4.0.30319

4.0, 64-bit –> C:\Windows\Microsoft.NET\Framework64\v4.0.30319

  MEX调试扩展:This extension is widely used by Microsoft Support Engineers in troubleshooting process applications

下载地址: https://www.microsoft.com/en-us/download/details.aspx?id=53304

下载完成后,将32/64位的Mex.dll 拷贝到windbg安装目录中

例如:C:\Program Files\Debugging Tools for Windows (x64)\Mex.dll

详细使用说明: https://github.com/REhints/WinDbg/tree/master/MEX

下载、安装、配置完成Windbg之后,接下来我们了解一下一些基本的调试命令。

二、基本的WinDbg调试指令

1. WinDbg自带的调试指令

.NET高级调试系列-Windbg调试入门篇

.NET高级调试系列-Windbg调试入门篇

更多指令,可以查看一下链接:

https://docs.microsoft.com/zh-cn/windows-hardware/drivers/debugger/getting-started-with-windbg

2. SOS调试扩展常用的调试指令

.NET高级调试系列-Windbg调试入门篇

.NET高级调试系列-Windbg调试入门篇

.NET高级调试系列-Windbg调试入门篇

.NET高级调试系列-Windbg调试入门篇

.NET高级调试系列-Windbg调试入门篇 .NET高级调试系列-Windbg调试入门篇

.NET高级调试系列-Windbg调试入门篇

.NET高级调试系列-Windbg调试入门篇

.NET高级调试系列-Windbg调试入门篇

.NET高级调试系列-Windbg调试入门篇

.NET高级调试系列-Windbg调试入门篇

3. Mex调试扩展常用的调试指令

.NET高级调试系列-Windbg调试入门篇

.NET高级调试系列-Windbg调试入门篇

.NET高级调试系列-Windbg调试入门篇

.NET高级调试系列-Windbg调试入门篇

.NET高级调试系列-Windbg调试入门篇

.NET高级调试系列-Windbg调试入门篇

   更多Mex调试指令,可以查看链接: https://github.com/REhints/WinDbg/tree/master/MEX

以上是整个Windbg调试入门篇的介绍,希望大家能够掌握,下一篇我们将通过一些具体的案例,示意各个指令的使用场景。

周国庆

2020/6/27


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Iterative Methods for Sparse Linear Systems, Second Edition

Iterative Methods for Sparse Linear Systems, Second Edition

Yousef Saad / Society for Industrial and Applied Mathematics / 2003-04-30 / USD 102.00

Tremendous progress has been made in the scientific and engineering disciplines regarding the use of iterative methods for linear systems. The size and complexity of linear and nonlinear systems arisi......一起来看看 《Iterative Methods for Sparse Linear Systems, Second Edition》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具