当前位置: 首页 > news >正文

学习使用dotnet-dump工具分析.net内存转储文件(3)

  dotnet-dump工具中使用clrthreads、threads、dso命令可以查看不同线程的堆栈内托管对象,其中clrthreads命令支持查看正在运行的托管线程列表,threads命令支持切换线程,dso命令(dumpstackobjects命令的缩写)能够显示当前线程的堆栈边界内所有托管对象。
  以前一篇文章中的dump文件为例,输入clrthreads命令,可以显示线程总数量、后台线程数量、死线程数量及线程明细。输入dso命令,可以看到当前线程的OSID及堆栈中的对象信息(对象地址、对象类型等)。输入“threads -t osid值“命令切换线程(也可以输入“threads DBG值”切换 ),然后输入dso查看切换后的堆栈内对象信息,对于感兴趣的对象,可以输入“dumpobj 对象地址”查看对象详细信息。
  clrthread命令返回的结果中的线程状态列(state)是一串数字,可以使用“threadstate 状态值”命令查看状态含义。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
  同样配合使用clrthreads、threads、clrstack可以查看指定线程的托管代码的堆栈跟踪。如下图所示,切换到线程0,然后查看堆栈,接着切换到线程0x4970查看堆栈。
在这里插入图片描述
在这里插入图片描述
  以dump开头的命令有不少,之前学习过dumpheap、dumpobj、dso(dumpstackobjects),除此之外MSDN中介绍使用dumpassembly命令显示有关程序集的详细信息,但实际使用时如果没有带参数,则直接提示“Invalid Assembly”,可能是程序集地址无效,也可能是程序集未加载或已卸载,此时可以使用dumpdomain命令列出所有 AppDomain 的程序集的信息,其中就有程序集的地址信息,再使用“dumpassembly 程序集地址”即可查看程序集的信息了。
在这里插入图片描述在这里插入图片描述
  dumpconcurrentdictionary、dumpconcurrentqueue、dumparray命令用于查看并发字典、并发队列及数组类型的数据,使用上述命令前需要用dumpheap -mt 或者dumpheap -type列出对象清单,然后找感兴趣的对象查看详情。

参考文献:
[1]https://learn.microsoft.com/zh-cn/dotnet/core/diagnostics/dotnet-dump
[2]https://www.nuget.org/packages/dotnet-dump

http://www.lryc.cn/news/576917.html

相关文章:

  • Java 数据结构 泛型
  • ListExtension 扩展方法增加 转DataTable()方法
  • 常用指令合集(DOS/Linux/git/Maven等)
  • BP-Tools21.02下载 加解密利器 金融安全交易算法工具 PCI认证工具 金融和智能卡的数据加解密和数据转换工具
  • RabbitMQ中,basicAck、basicNack和basicReject是三种核心的消息确认机制
  • 左神算法之矩阵旋转90度
  • 浮油 - 3 相分层和自由表面流 CFX 模拟
  • github上传代码步骤(http)
  • Docker安装的gitlab配置ssl证书
  • 电力协议处理框架C++版(一)
  • ECMAScript 2019(ES2019):数组与对象操作的精细化升级
  • 【linux】权限深入解析
  • Cursor 教程:用 Cursor 创建第一个 Java 项目
  • Mac homebrew 安装教程
  • 【数据集处理】基于 3D-GloBFP建筑轮廓数据 栅格化建筑数据(完整Python代码)
  • 【模拟】数⻘蛙(medium)
  • MybatisPlus-02.快速入门-入门案例
  • RagFlow 更适合企业级深度应用,FastGPT 更适合快速开发和原型验证
  • Kafka4.0初体验
  • games101 作业6
  • 从GPTs到Real智能体:目前常见的几种创建智能体方式
  • [双指针]1498. 满足条件的子序列数目
  • Mybatis多条件查询设置参数的三种方法
  • Linux系统移植15:Linux内核编译
  • 数据挖掘、机器学习与人工智能:概念辨析与应用边界
  • Ubuntu服务器(公网)- Ubuntu客户端(内网)的FRP内网穿透配置教程
  • 通达信【MACD趋势增强系统】幅图(含支撑压力位)
  • 模拟多维物理过程与基于云的数值分析-AI云计算数值分析和代码验证
  • WebRTC系列:(一)MacOS开发环境搭建(Vscode + Clangd)
  • 【Linux手册】进程等待:必要性剖析与wait、waitpid等多种方式实操指南