写点什么

CLR Memory Diagnostics 支持自动化检查任务

  • 2013-06-13
  • 本文字数:887 字

    阅读完需:约 3 分钟

微软最近发布了 Microsoft.Diagnostics.Runtime 组件,该组件在 NuGet 包管理器中被称作 ClrMD,支持开发者自动化检查任务及访问更多调试信息。它是一组高级 API,用于以编程方式检查.NET 程序的崩溃转储文件,和 SOS Debugging Extensions (SOS.dll)差不多,它支持为应用程序编写自动化的崩溃分析,还支持将很多常见调试器任务的自动化。

要使用 ClrMD 组件,需要创建 DataTarget 类的一个实例,它或者表示一个崩溃转储文件,或者表示一个正在运行的.NET 进程。创建完毕之后,必须调用 TryGetDacLocation() 方法,该方法试图在当前这台机器上找到匹配的 DAC。不过,如果当前机器上没有安装匹配的 CLR,可以从已安装的机器上把 DAC 复制过来,只需要手动把对应的 mscordacwks.dll 的路径提供给 CreateRuntime() 方法。

之后可以利用运行时对象来检查 GC 堆的内容,它会产生下面这样的输出:

23B1D30 36 System.Security.PermissionSet
23B1D54 20 Microsoft.Win32.SafeHandles.SafePEFileHandle
23B1D68 32 System.Security.Policy.PEFileEvidenceFactory
23B1D88 40 System.Security.Policy.Evidence

现在开发者有了输出堆统计信息所需要的数据,输出可以通过这种方式进行——使用 LINQ 查询将堆信息按类型分组,按总的对象大小排序。产生的输出类似下面这样:

564 11 System.Int32[]
616 2 System.Globalization.CultureData
680 18 System.String[]
728 26 System.RuntimeType
790 7 System.Char[]
5,788 165 System.String
17,252 6 System.Object[]

ClrMD 也支持检索 GC 堆的一般信息、遍历 CLR 的句柄表和进程中的应用域及识别加载了哪些模块。除了收集.NET 运行时所使用的各种堆相关的数据,它还支持枚举线程、这些线程的调用栈、线程上最后抛出的异常及进程的对象根。包括在 ClrMD 包组件中的智能感知支持开发者探索各种复杂的属性和函数。

除上述特性外,ClrThread 对象包含了一个 CurrentException 属性,还包含了完整的栈跟踪信息及所抛出异常的消息和类型。CurrentException 属性可能为空,如果为空,它会包含当前线程最后抛出的异常。

查看英文原文: CLR Memory Diagnostics Enables you to Automate Inspection Tasks

2013-06-13 06:271641
用户头像
臧秀涛 略懂技术的运营同学。

发布了 300 篇内容, 共 150.2 次阅读, 收获喜欢 35 次。

关注

评论

发布
暂无评论
发现更多内容

千锋教育走访人才合作企业数式科技 深度了解企业人才需求

千锋IT教育

OneFlow源码解析:Global Tensor

OneFlow

人工智能 深度学习 源码解析

前端比较好的培训机构是哪家?

小谷哥

分层的电子签市场,被忽略的小微企业

ToB行业头条

数字化转型如何成为增长和创新的工具

雨果

数字化转型

壳牌公司利用数字孪生推动绿色工厂计划和氢能经济

雨果

数字化转型

Go语言入门10—Map

良猿

Go golang 后端 Go web

前端培训学习的人这么多,行业前景怎样

小谷哥

埃森哲《2022中国企业数字化转型指数》: 中国企业数字化进程五年间稳步推进,17%企业成领军者

雨果

数字化转型

web前端开发培训有前途吗?

小谷哥

和鲸 ModelWhale 入选《2022爱分析 · 数据智能厂商全景报告》

ModelWhale

机器学习 数据智能 数据科学 厂商

从“青铜”到“王者”,制造企业的数字化闯关记

脑极体

LED显示屏安装之前要注意的问题

Dylan

LED显示屏 户外LED显示屏 led显示屏厂家

OpenHarmony将携新成果亮相HDC2022

OpenHarmony开发者

OpenHarmony

Mac Osx终端显示图片

Geek_pwdeic

terminal osx

这么多大数据培训机构怎么来选择呢

小谷哥

“程”风破浪的开发者|我的js之路

隔壁老帆帆

学习方法 1024 1024程序员节 “程”风破浪的开发者

C# 关于多态性学习

IC00

C# 学习 上位机 10月月更

Gartner:通过数字投资缩短价值实现时间的必要性

雨果

数字化转型 CIO

企业选型必读:选择数据湖or数据仓库?

雨果

数据仓库 数据湖

Java 字节码简介

Kian.Lee

Java JVM bytecode 字节码

面向复杂业务场景下的低代码平台组件设计与实践分享

Baidu AICLOUD

组件化 低代码开发平台 数据映射

实时数据湖 Flink Hudi 实践探索

阿里云大数据AI技术

大数据 flink 企业号十月 PK 榜

安全可控的企业级低代码开发平台

力软低代码开发平台

C#泛型协变和逆变概念学习

IC00

C# 上位机 10月月更

深圳开发培训学习怎么选择靠谱的机构?

小谷哥

让你的 Runner 可视化,使用 Prometheus + Grafana 实现极狐GitLab Runner 可视化

极狐GitLab

DevOps Grafana Prometheus runner 极狐GitLab

学C++的以后都能从事哪些岗位?

C++后台开发

c++ 后端开发 客户端开发 linux开发 C++开发

九科信息RPA助力某大型航运企业财务部门降本增效,实现业务流程自动化操作

九科Ninetech

CLR Memory Diagnostics支持自动化检查任务_语言 & 开发_Anand Narayanaswamy_InfoQ精选文章