速来报名!AICon北京站鸿蒙专场~ 了解详情
写点什么

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:271146
用户头像
臧秀涛 略懂技术的运营同学。

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

关注

评论

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

redux原理是什么

xiaofeng

React

Docker进阶 dockerfile指令构建docker镜像

Python-派大星

10月月更

引擎上新|卡片焕新升级,信息高效呈现

Jianmu

DevOps 持续集成 CI/CD

webpack实战,手写loader和plugin

Geek_02d948

webpack

云安全系列2:访问安全和身份管理

HummerCloud

云计算 云安全 iam 身份和访问管理 10月月更

原生拖拽太拉跨了,纯JS自己手写一个拖拽效果,纵享丝滑

茶无味的一天

CSS html HTML5, CSS3 拖拉拽 原生js

长安链源码分析同步服务器1

京东云开发者|ElasticSearch降本增效常见的方法

京东科技开发者

elasticsearch ES 降本增效 数据压缩 存储计算分离

Java:既然有了synchronized,为什么还要提供Lock

华为云开发者联盟

Java 开发 华为云 企业号十月 PK 榜

Vue组件是怎样挂载的

yyds2026

Vue

【1024程序员节专访】聚焦行业前沿,共话IT发展趋势

博睿数据

程序员 可观测性 智能运维 博睿数据 IT行业

5 why 分析法,一种用于归纳抽象出解决方案的好方法

程序员泥瓦匠

漏洞评分高达9.8分!Text4Shell 会是下一个 Log4Shell吗?

SEAL安全

安全 log4j 漏洞分析 Log4j2 漏洞 软件供应链安全

Vue虚拟dom是如何被创建的

yyds2026

Vue

Webpack配置实战

Geek_02d948

webpack

Redis 知识点全面击破,多图警告

小小怪下士

Java redis 程序员

Workflow,要不要了解一下

华为云开发者联盟

人工智能 华为云 企业号十月 PK 榜

webpack模块化的原理

Geek_02d948

webpack

文读懂NodeJs知识体系和原理浅析

coder2028

node.js

【沙丘大会】九科信息研发中心自动化负责人郑文茂受邀分享央企数字员工实践案例

九科Ninetech

彻底搞懂nodejs事件循环

coder2028

node.js

从 wepy 到 uniapp 变形记

vivo互联网技术

wepy uni-app 前端 编译器

SAP | 功能模块

暮春零贰

SAP 功能块 10月月更

一文读透react精髓

xiaofeng

React

小样本学习在文心ERNIE3.0多分类任务应用--提示学习

汀丶人工智能

nlp 文本分类

Vue模板是怎样编译的

yyds2026

Vue

云小课|MRS基础原理之Oozie任务调度

华为云开发者联盟

大数据 华为云 企业号十月 PK 榜

线上数据问题排查案例分享-因为 HMS 和底层 orc 文件中某字段的数据精度不一致造成的数据丢失问题

明哥的IT随笔

hadoop hive DataX

SAP | 子例程

暮春零贰

SAP 10月月更 子例程

【文本检测与识别白皮书-3.2】第二节:场景文本识别方法

合合技术团队

人工智能 深度学习 文字识别 OCR 文本识别

深入nodejs的event-loop

coder2028

node.js

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