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


    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版本

    下载后一步一步安装即可

     2. 配置调试符号

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

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

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

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

      

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

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

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

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

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

     4.0, 32-bit –> C:WindowsMicrosoft.NETFrameworkv4.0.30319
     4.0, 64-bit –> C:WindowsMicrosoft.NETFramework64v4.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 FilesDebugging Tools for Windows (x64)Mex.dll

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

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

    二、基本的WinDbg调试指令

    1. WinDbg自带的调试指令

     

       

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

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

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

       

        

        

     

      

      

      

      

     

      

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

       

         

        

        

        

        

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

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

    周国庆

    2020/6/27

  • 相关阅读:
    postman使用详解
    如何测试一个水杯
    selenium3(java)之屏幕截图操作
    C语言随机点名程序
    关于测试执行的一些总结与思考
    小议SQL数据插入
    BS架构和CS架构的区别
    Oracle伪列(ROWNUM)的使用
    Loadrunner学习资料
    【Apache运维基础(2)】主配置文件说明
  • 原文地址:https://www.cnblogs.com/tianqing/p/13197382.html
Copyright © 2020-2023  润新知