怎么正确使用dotnet-*工具
本篇内容主要讲解“怎么正确使用dotnet-*工具”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么正确使用dotnet-*工具”吧!
安装
因为我们现在都是容器化时代了,所以我们可以把这类工具全部制作成基础镜像
准备Dockerfile
FROM mcr.microsoft.com/dotnet/sdk:3.1 AS sdkRUN dotnet tool install --tool-path /tools dotnet-traceRUN dotnet tool install --tool-path /tools dotnet-countersRUN dotnet tool install --tool-path /tools dotnet-dumpRUN dotnet tool install --tool-path /tools dotnet-gcdumpFROM mcr.microsoft.com/dotnet/core/aspnet:3.1 AS runtimeWORKDIR /toolsCOPY --from=sdk /tools .basedockerfile.yaml
验证
基础镜像做好了,查看下镜像的大小应该就比runtime的大小多几十兆,相比为了使用dotnet-* tool而直接采用sdk的话,体积小了很多很多
用我们刚才制作的基础镜像随便起个demo程序验证下
已经包含了tools文件夹了,里面存放了我们的tools工具
以dotnet-trace为例,测试下是否可用(ps:注意使用方式)
至此包含tools的runtime基础镜像制作完毕。
dotnet-dump
它只能收集托管内存,不能用于条是本地代码的问题,而且分析它所创建的dump文件,必须和当前环境保持一致
createdump
它既可以收集本地信息又可以收集托管信息,是一种比较全面而且推荐的方法
虽然gdb、gcore也能起到同样的作用,但是他们可能会在收集的时候错过一些托管状态,导致最后你分析dump文件的时候有”UNKNOWN“的错误
这个工具是伴随着.net core runtime安装的,目录一般在”/usr/share/dotnet/shared/Microsoft.NETCore.App/[version]“下
开始使用:
/usr/share/dotnet/shared/Microsoft.NETCore.App/3.1.10/createdump -u 1 (1是我容器中程序的进程id)
他会将coredump文件生成到容器的tmp目录下,至此没报错的话,说明成功
如果报权限相关错误,可以在你的yaml文件里加上:
分析coredump文件
先将上面生成在tmp下的coredump文件copy到可以调试的地方
kubectl cp bookstore/demo-7b6d9f6d4f-2t8hl:/tmp/coredump.1 /root/mydump/coredump.1 -c app-k8s
然后为我们的coredump.1文件下载关联的symbol:
sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm
sudo yum install dotnet-sdk-3.1
dotnet tool install --global dotnet-symbol
然后关闭当前终端,再打开一个新的
看到dac,dbi文件写入就代表成功了,这时候你的文件夹应该长这样
如果你机器里没装的话,先装一个吧
安装sos插件:
dotnet tool install --global dotnet-sos
dotnet-sos install
lldb-8 --core coredump.1
然后就可以用lldb来分析dump文件了
到此,相信大家对“怎么正确使用dotnet-*工具”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341