.NET高级调试系列-Windbg调试入门篇
Windbg是.NET高级调试领域中不可或缺的一个工具和利器,也是日常我们分析解决问题的必备。准备近期写2篇精华文章,集中给大家分享一下如果通过Windbg进行.NET高级调试。 今天我们来一篇入门的文章。首先,Windbg是什么? Windows Debugger,简称WinDbg,.NET 最强分析调试利器。它可以用来:
我们可以通过WinDbg调试以下具体问题:
那么,首先我们先进行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 ? 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/05 ? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 单元测试 – 首先要测试的项目的哪个部分?
- asp.net-mvc-3 – 如何避免在控制器中使用try … catch?
- asp.net – 在Sitecore中检索URL路径部分的方法是什么?
- asp.net-mvc – 如何将Mask放入文本框?
- asp.net – 如何传递datetime参数?
- asp.net-mvc-3 – Asp.net MVC Site.master和Razor Switch
- asp.net – 在usercontrols之间共享数据
- asp.net-mvc – ASP.NET MVC Remote属性方法参数始终传递nu
- asp.net – 多语言网站随机改变语言
- ASP.net会员强制用户离线(作为管理员)