写点什么

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

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

关注

评论

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

一图读懂金仓企业级分布式数据库KES Sharding

金仓技术

KingbaseES 金仓数据库

一图读懂金仓集中运维管控一体化平台KOPS

金仓技术

KingbaseES 金仓数据库

使用Chat2DB连接金仓数据库KingbaseES

金仓技术

KingbaseES 金仓数据库

【工业数据技术研讨会】4.26 广州 | 国产开源数据库技术交流,错过再等一年!

Apache IoTDB

问界M8正式发布:车载小艺一路聊,随时随地问问小艺

新消费日报

一张图读懂金仓数据库KFS

金仓技术

KingbaseES 金仓数据库

KingbaseES+SqlSugar为医疗用户排忧解难

金仓技术

KingbaseES 金仓数据库

重生之我在金仓开发数据库:KES性能飞跃的秘密

金仓技术

KingbaseES 金仓数据库

金仓数据库与SQL Server兼容性分析报告

金仓技术

KingbaseES 金仓数据库

从手动档到无人驾驶:金仓数据库自适应基数估计技术介绍

金仓技术

KingbaseES 金仓数据库

如何通过KStudio连接金仓数据库KingbaseES

金仓技术

KingbaseES 金仓数据库

一图看懂金仓快速开发与运维平台KES Plus

金仓技术

KingbaseES 金仓数据库

一图读懂金仓云数据库一体机

金仓技术

KingbaseES 金仓数据库

温水煮青蛙5年被裁,耗时2个月终靠这套445页Java面试场景题逆袭

程序员高级码农

面试题 Java 面试 java ,面试 #程序员

使用PawSQL连接金仓数据库

金仓技术

KingbaseES 金仓数据库

解析金仓数据透明加密性能损耗

金仓技术

KingbaseES 金仓数据库

数据库膨胀?性能下降?别怕,金仓数据库KES魔法咒语来拯救!

金仓技术

KingbaseES 金仓数据库

镜舟科技助力某大型电网企业破解数据架构升级难题,打造国产化湖仓标杆

镜舟科技

开源 数据分析 分析型数据库 StarRocks 湖仓

ESXi 8.0U3e 重大更新发布,修复 150 多个已知问题

sysin

esxi

备份空间不够用?金仓数据库破局!

金仓技术

KingbaseES 金仓数据库

金仓数据库KingbaseES集群部署从未如此轻松!

金仓技术

KingbaseES 金仓数据库

VMware vCenter Server 8.0U3e 新增功能简介

sysin

vcenter

WPS Office for Mac 7.3.1 - 写作、表格处理、PPT 制作和 PDF 编辑

sysin

WPS Office

金仓数据库KingbaseES在线打补丁,运维更轻松

金仓技术

KingbaseES 金仓数据库

聊聊软件生命周期中的度量指标(附《软件研发效能度量规范》下载)

思码逸研发效能

研发管理 研发效能 效能管理 思码逸 研发指标

金仓数据库KingbaseES安装指南(Linux环境)

金仓技术

数据库· KingbaseES 金仓数据库

如何使用Ksql 连接金仓数据库KingbaseES

金仓技术

KingbaseES 金仓数据库

使用Nagios监控金仓数据库KingbaseES

金仓技术

KingbaseES 金仓数据库

AI 语音公司 ElevenLabs 进军亚太市场设立东京子公司;EverTutor Live :语音交互 AI 教育平台丨日报

RTE开发者社区

SvelteKit 最新中文文档教程(20)—— 最佳实践之性能

冴羽

前端 前端开发 前端框架 Svelte SvelteKit

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