[Dump分析自学笔记] 1.windbg安装以及linux下dump文件抓取

发布时间 2023-06-27 09:48:54作者: 邓振振

1.程序背景: .net core web api . 主要做MES的.

运行环境: Linux 64位
.Net版本 : .Net 6
进程守护: Supervisor

因此需要下载Linux上的dump工具,就是微软自带的dotnet-dump,以下是准备的工具.

dotnet-counters : dotnet-counters 诊断工具 - .NET CLI | Microsoft Learn
dotnet-dump : dotnet-dump 诊断工具 - .NET CLI | Microsoft Learn
windbg preview :下载 Windows 调试工具 - WinDbg - Windows drivers | Microsoft Learn

dotnet-counters 和 dotnet-dump 是放在服务器上的, 我先放到 (/usr/etc/)并给777权限

 

其中dotnet-counters用来简单的分析下内存占用,dotnet-dump 用来生成 dump文件

windbg 安装在自己的电脑上就行了, 主要用来分析dump文件的

 

2.Windbg的基本设置

1 . 在本机电脑上打开windbg设置微软公共符号

上图中的Symbol path 为

SRV*C:\mysymbols*http://msdl.microsoft.com/download/symbols

2.安装sos扩展

在本机电脑上打开cmd,执行

dotnet tool install -g dotnet-sos

image

然后再执行

dotnet-sos install

image

dotnet命令非常人性化,提示咱们用这个 .load C:\Users\H12727182\.dotnet\sos\sos.dll 命令加载sos, 这个.load命令先记录下来.将来能用到.

3. 抓取dump文件

首先找到程序的进程ID
1.直接使用

ps -ef | grep donet

image

2.因为上文说到程序使用supervisor来做进程守护的,所以可以使用supervisorctl status来查看进程ID
image

切换到/usr/etc下,使用命令

./dotnet-counters monitor -p 18042

可以简单的看下内存占用情况

使用命令

./dotnet-dump collect -p 18042

可以生成dump文件.目前碰到的情况内存如果32G被占用完了,dump也在30G左右,所以生成的dump文件如果特别大,可以使用zip压缩一下.然后再用sftp download本地

4. 鸣谢

最后感谢一线码农在博客园分享了这么多dump,让我们这些小白也能玩玩这些高端的东西,因此自己也记录一下学习的过程

一线码农分析dump地址 : windbg - 随笔分类 - 一线码农 - 博客园 (cnblogs.com)