本文介绍了dotnet-*工具的正确使用方法,对大家的学习或工作都有一定的参考价值。让我们和边肖一起学习。
目录
安装验证dotnet-dumpcreatedump分析核心转储文件相关信息:
安装
因为我们现在处于容器化时代,我们可以把这些工具都做成基本的图像。
准备文档
来自mcr.microsoft.com/dotnet/sdk:3.1的sdk
运行点网工具安装-工具路径/工具点网-跟踪
运行点网工具安装-工具路径/工具点网-计数器
运行点网工具安装-工具路径/工具点网-转储
运行dotnet工具安装-工具路径/工具dotnet-gcdump
从mcr.microsoft.com/dotnet/core/aspnet:3.1作为运行时
工作目录/工具
复制自=sdk /tools。
basedockerfile.yaml
验证
基本图像准备好了。你看一下,镜像的大小应该比运行时大几十兆。与直接使用sdk以便使用dotnet-*工具相比,体积要小得多。
使用我们刚刚制作的基本图像启动一个演示程序来验证它。
它已经包含了工具文件夹,在那里我们的工具工具存储。
以dotnet-trace为例测试是否可用(ps:注意用法)
至此,包含工具的运行时基本映像已经制作完成。
dotnet-dump
它只能收集托管内存,不能用于本地代码的问题。而且,分析它创建的转储文件必须与当前环境一致。
createdump
既可以收集本地信息,也可以收集托管信息,是一种全面的、值得推荐的方法。
虽然gdb和gcore也可以扮演相同的角色,但它们可能会在收集过程中错过一些托管状态,从而导致您最终分析转储文件时出现“未知”错误。
此工具随一起安装。net core运行时,目录一般在“/usr/share/dot net/shared/Microsoft . net core . app/[version]”下
开始使用:
/usr/share/dot net/shared/Microsoft . net core . app/3 . 1 . 10/create dump-u 1(1是我的容器中程序的进程id)
他将把coredump文件生成到容器的tmp目录中。如果到目前为止没有错误,就表示成功了。
如果您报告了与权限相关的错误,您可以添加:
分析coredump文件
将上面在tmp下生成的coredump文件复制到可以调试的地方。
kubectl CP book store/demo-7 b 6d 9 f 6d 4 f-2t 8 HL:/tmp/core dump . 1/root/my dump/core dump . 1-c app-k8s
然后下载coredump.1文件的相关符号:
如果你准备分析dump的机器没有dotnet sdk的话,先装一个把
sudo rpm-Uvh https://packages . Microsoft . com/config/centos/7/packages-Microsoft-prod . rpm
sudo yum install dotnet-sdk-3.1
如果dotnet-symbol没有安装的话,安装一个
点网工具安装-全局点网-符号
然后关闭当前终端,打开一个新的。
然后执行dotnet-symbol --host-only --debugging coredump.1
看到dac,写dbi文件就代表成功,此时你的文件夹应该是这样的。
然后我们使用lldb进行调试
如果您的机器中没有,请先安装一个。
安装sos插件:
点网工具安装-全局点网-sos
dotnet-sos安装
lldb-8核coredump.1
然后,您可以使用lldb来分析转储文件。
相关资料:
https://docs . Microsoft . com/en-us/dot net/core/diagnostics/dot net-symbol
https://github . com/dot net/diagnostics/blob/master/documentation/debugging-coredump . MD
https://dev blogs . Microsoft . com/devo PS/understanding-symbol-files-and-visual-studios-symbol-settings/
https://github . com/dot net/diagnostics/blob/master/documentation/FAQ . MD
https://github.com/dotnet/runtime/issues/11012
关于大型对象的使用和官方blob gc的实现描述的说明
以上是边肖介绍的dotnet-*工具的正确使用方法。希望对你有帮助。非常感谢您对我们网站的支持!