WinDbg Preview简单使用

CLR程序调试入门

程序不光要能跑,还要能一直稳定的跑。前段时间线上接口时不时就会整体Down一下,性能非常不稳定,通过多方摸索,尝试才找到原因。不从细节直接入手,出现问题就会手忙脚乱,不能在短时间内解决。

dump包的抓取

Windows

直接在任务管理器里面,选中对应的进程,右键->创建转储文件 即可。

Linux

首先需要安装抓取dump的工具:

dotnet tool install -g dotnet-dump

然后找到需要抓取dump包的进程的,NetCore程序可以通过一下命令查看(dotnet可以修改程启动进程的命令,模糊匹配):

ps -aux |grep dotnet

使用安装的工具dotnet-dump即可抓取对应进程的dump:

dotnet-dump collect --process-id <PID>

基本dump包分析

安装Windbg Preview,可以直接在Windows的应用商店Microsoft Store搜索WinDbg,然后直接安装即可。

安装完毕打开如图:
](https://img-blog.csdnimg.cn/81fd816dfe4b498a8c103922e1d6c301.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI1NDA3Nzcx,size_16,color_FFFFFF,t_70)

配置微软公有符号,配置路径如下,路径填写SRV*C:\mysymbols*http://msdl.microsoft.com/download/symbols 即可
在这里插入图片描述

点击文件,然后点击下图框出来的地方,选择抓取的dump文件,即可进行分析。
在这里插入图片描述
打开之后,进入到如下命令行页面,会展示一些dump包基本的信息,以及提示,可以通过 !analyze -v 进行进一步的分析。
在这里插入图片描述

调试器命令可以参照微软官方文档调试命令

SOS 调试扩展

获取对应的clr.dll以及sos.dll

想要获取进一步的分析,就需要加载coreclr.dll(clr.dll–framework程序)以及sos.dll进行进一步的分析。
由于不通版本的程序coreclr.dll(clr.dll)以及sos.dll不一样,所以每次分析的时候,需要根据抓取dump包的程序的目标框架,选择不同的版本。
首先,可以通过一下命令查看到对应的coreclr.dll版本,然后通过下面的方法找到对应的coreclr以及sos。

lmv -mcoreclr

framework的路径如下,路径里面第一层是机器位数,第二层是framework对应的版本,第三层就可以找到对应的clr.dll以及sos.dll:

C:\Windows\Microsoft.NET

netcore下的coreclr.dll以及sos.dll就比较复杂,NetCore的路径如下,路径下第一层即dotnet对应的版本,第二层可以直接找到对应的coreclr.dll:

C:\Program Files\dotnet\shared\Microsoft.NETCore.App

但是sos.dll不一定能找到,NetCore3.0之前,可以直接找到,但是NetCore3.0之后,Sos.dll不会直接放在该文件夹下。不过里面有个SOS_README.md,内容如下:

SOS and other diagnostic tools now ship of band and work with any version of the .NET Core runtime.
SOS has moved to the diagnostics repo here: https://github.com/dotnet/diagnostics.git.
Instructions to install SOS: https://github.com/dotnet/diagnostics#installing-sos.

打开对应的github地址,找到如下地址https://github.com/dotnet/diagnostics/blob/main/documentation/sos.md,可以找到sos的安装方法。
Windows的安装方法如下【windows安装Sos】:
先安装对应的工具dotnet-sos,命令如下:

dotnet tool install -g dotnet-sos

然后执行dotnet-sos的安装命令:

dotnet-sos install

即可获取到对应的sos.dll,路径为:

 C:\Users\<对应的用户名>\.dotnet\sos

加载基于sos的符号

加载dll,可以通过**.load <dll地址>** :

  .load C:\Program Files\dotnet\shared\Microsoft.NETCore.App\2.1.23\sos.dll
  .load C:\Program Files\dotnet\shared\Microsoft.NETCore.App\2.1.23\coreclr.dll

加载完成之后,就可以通过 !clrstack -l 查看对应的clr堆栈调用情况。

配置完成之后,也可以使用基于Sos的调试命令。命令帮助可以使用 !SOS.help 查看,也可以参照微软官方文档SOS扩展调试
其他更多调试方法,也可以根据官方文档进行配置。

加载sos异常及处理方法

常见异常及处理方法可以参考一下文档常见异常

  • 4
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Windbg Preview是一种由微软提供的强大的调试工具,用于分析和调试Windows操作系统和应用程序的问题。它采用了现代化的用户界面和更丰富的功能,相较于传统的Windbg有着更好的用户体验和更高效的调试能力。 使用Windbg Preview,我们首先需要安装并打开该工具。一般来说,我们可以从微软官方网站下载该工具的安装包,并执行安装程序进行安装。 安装完成后,我们可以打开Windbg Preview,然后选择要调试的应用程序或者操作系统文件。通过加载所选文件,我们可以开始进行调试。 Windbg Preview提供了许多强大的调试功能,包括断点设置、变量查看、内存查看等。我们可以利用这些功能逐步执行代码,查看变量的值,检查内存的情况,以帮助我们找到程序中的问题。 此外,Windbg Preview还支持远程调试,即我们可以在一台计算机上使用该工具对另一台计算机上的程序进行调试。这对于排查复杂问题非常有帮助。 总之,Windbg Preview是一款功能强大且灵活多样的调试工具,可以帮助开发人员定位和解决Windows应用程序和操作系统的问题。它的使用可以提高调试的效率和准确性,是开发人员不可或缺的工具之一。 ### 回答2: Windbg Preview是微软官方推出的一款调试工具,旨在帮助开发人员分析和解决Windows操作系统和应用程序的问题。以下是我对Windbg Preview使用的一些说明。 首先,需要下载和安装Windbg Preview工具。它可以从微软商店或Windbg官方网站上免费获取。安装完成后,打开Windbg Preview应用程序。 在Windbg Preview的界面中,你可以看到一个命令栏,可以输入各种调试命令来进行调试操作。通过使用Windbg Preview,你可以附加到一个正在运行的进程,或者打开一个崩溃或转储文件来进行调试。 Windbg Preview支持多种调试技术,包括内核级和用户级调试。你可以使用Windbg Preview来查看线程的堆栈跟踪,屏幕输出,全局和局部变量等调试信息,以帮助你诊断和解决问题。 此外,Windbg Preview还提供了一系列的扩展和插件,可以进一步增强工具的功能。可以使用这些扩展来执行更高级的调试操作,如性能分析、内存分析、汇编级调试等。 总的来说,Windbg Preview是一个功能强大且灵活的调试工具,适用于开发人员进行Windows操作系统和应用程序的调试和故障排除。通过在调试过程中熟练掌握Windbg Preview使用,你可以更轻松地定位和解决各种问题,提高软件质量。 ### 回答3: Windbg Preview是一款由微软公司开发的调试工具,可用于Windows操作系统的内核和用户模式程序的调试。以下是关于Windbg Preview使用的一些信息: 首先,我们需要从微软官网上下载并安装Windbg Preview。安装完成后,打开软件,可以看到软件界面分为几个部分:菜单栏、工具栏、命令行输入窗口和输出窗口。 在Windbg Preview中,我们可以使用命令行来执行各种调试操作,包括设置断点、查看变量值、追踪函数调用栈等。例如,通过输入".break"命令可以设置断点,当程序执行到指定位置时会自动中断。之后,我们可以使用".step"命令逐行执行代码,使用".frame"命令查看当前函数调用栈。 另外,Windbg Preview还提供了一些快捷键,方便我们进行调试操作。例如,按F5键可以继续执行程序,按F10键可以逐过程执行代码。 除了基本的调试功能,Windbg Preview还支持一些高级调试特性。例如,我们可以使用"!analyze"命令来分析程序崩溃的原因,并提供相关的调试信息。此外,Windbg Preview还支持与Windows内核调试器连接,以便进行内核级别的调试。 总而言之,Windbg Preview是一款功能强大的调试工具,可以帮助开发者定位和解决程序中的bug。使用Windbg Preview需要一定的调试经验和技巧,但掌握了它的使用方法,我们就能更快地定位和解决问题,提高程序的质量。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值