正确使用dotnet--工具的方法

正确使用dotnet-*工具的方法

本文介绍了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-*工具的正确使用方法。希望对你有帮助。非常感谢您对我们网站的支持!

正确使用dotnet--工具的方法