写点什么

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

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

关注

评论

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

Java并发编程:AQS的原子性如何保证

李尚智

Java java 并发

Code Shared & Review(20201214-20201220)

刘璐

盘点2020 | 干饭人 cxuan 活下来了

苹果看辽宁体育

学习 总结 盘点2020

第九周-作业一

ray-arch

4. 上新了Spring,全新一代类型转换机制

YourBatman

Spring Framework 类型转换 Converter

点个外卖,我把「软中断」搞懂了

小林coding

Linux 操作系统

围观|第一代云原生企业米哈游如何让想象发生?

阿里巴巴云原生

阿里云 最佳实践 运维 云原生 游戏开发

ETHERZ流动性挖矿系统软件APP开发

系统开发

JVM 垃圾回收原理

梧桐

阿里 10 年:一个普通技术人的成长之路

阿里巴巴云原生

阿里云 云原生 技术人 自我思考 职场成长

快手基于 Apache Flink 的优化实践

Apache Flink

flink

业务重要?还是技术重要?

数据社

思考 团队 七日更

UBI波场挖矿系统软件APP开发

系统开发

优化PostgreSQL Autovacuum

PostgreSQLChina

数据库 postgresql 开源 优化

安防小区管控系统建设,智慧社区智能化集成方案

t13823115967

智慧平安社区平台建设

一文搞懂 CountDownLatch 用法和源码!

苹果看辽宁体育

Java 源码 并发

工作3年,看啥资料能月薪30K?

小傅哥

Java 面试 小傅哥 七日更 技术成长

数据结构与算法经典问题解析-Java语言描述

田维常

数据结构

详解Spring5+SpringMVC5+MyBatis3.X,同时整合Redis缓存+ActiveMQ+项目等

Java架构追梦

Java spring 架构 mybatis springmvc

MySQL修改账号密码方法大全

Simon

MySQL 七日更

蚂蚁集团下架互联网存款产品:互联网金融是天使还是魔鬼

石头IT视角

Synchronized用法原理和锁优化升级过程(面试)

叫练

synchronized 轻量级锁 偏向锁 多线程与高并发 同步

LeetCode题解:92. 反转链表 II,递归,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

DeFi平台DAPP软件系统开发

系统开发

为什么你成为不了团队核心成员

数据社

团队 七日更

第九周总结

小兵

Linux 如何实现定时调度任务

Near

Linux Timer 定时调度

测开之函数进阶· 第1篇《递归函数》

清菡软件测试

测试开发

vivo 微服务 API 网关架构实践

vivo互联网技术

微服务 API网关 Zuul2

11 组关系带你看清 JVM 全貌

田维常

JVM

公安大数据:警务大数据分析系统解决方案

t13823115967

智慧公安

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