2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

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

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

关注

评论

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

软件测试 | 接口测试用例设计

测吧(北京)科技有限公司

测试

OceanBase CTO杨传辉:放手去干,这行没有35岁危机

OceanBase 数据库

数据库 oceanbase

软件测试 | 接口测试断言

测吧(北京)科技有限公司

测试

软件测试 | josn和XML请求

测吧(北京)科技有限公司

测试

部署 OpenLDAP 对接到 DataEase实现统一用户管理

搞大屏的小北

ldap openldap 统一管理 DataEase

多个云服务器管理小技巧-行云管家

行云管家

云计算 云服务器 云管理

江苏省16家正规等保测评机构名单看这里!

行云管家

等保 等级保护 等级保护机构 江苏

还在头疼每月房贷还款,这个房贷计算机让你一目了然

华为云开发者联盟

人工智能 华为云 企业号 2 月 PK 榜 华为云开发者联盟

软件测试 | JSON响应断言

测吧(北京)科技有限公司

测试

热点2023第十五届上海国际智慧工地展览会

InfoQ_caf7dbb9aa8a

【实操演示】使用NineData修改来管理ClickHouse的数据库表结构。

NineData

数据库 开发者 Clickhouse 表结构 NineData

如何使用DevEco Studio创建Native C++应用

OpenHarmony开发者

OpenHarmony

你什么档次?敢和我用一样的即时通讯平台WorkPlus?

BeeWorks

购买LED液晶拼接屏的十大原则

Dylan

显示器 LED显示屏 led显示屏厂家

软件测试 | XML响应断言

测吧(北京)科技有限公司

测试

调查报告解读之国外数据库篇:MySQL国内使用率第一,多少企业有意替换国外产品?

墨天轮

MySQL 数据库 oracle redis 国产数据库

软件测试 | 接口请求构造

测吧(北京)科技有限公司

测试

软件测试 | JSON Schema断言

测吧(北京)科技有限公司

大曝光!从RabbitMQ平滑迁移至Kafka架构设计方案!

艾小仙

kafka 架构 RocketMQ RabbitMQ

可观测落地实践——从战略管理到工具落地

嘉为蓝鲸

可观测 自动化运维 嘉为蓝鲸

自动化运维和普通运维有什么区别?

嘉为蓝鲸

自动化运维 嘉为蓝鲸

软件测试 | 接口测试框架

测吧(北京)科技有限公司

测试

软件测试 | From请求

测吧(北京)科技有限公司

测试

WorkPlus“Meet”,让企业高效协作的视频会议系统

BeeWorks

学术贴 | FPGA 加速图数据库查询执行

KaiwuDB

数据库

缺少IT人员的服装行业该如何进行数字化转型?

优秀

数字化转型

AI2023第十五届上海国际人工智能展览会

InfoQ_caf7dbb9aa8a

拒绝“ 背锅”!数据治理从策略到落地,发挥CMDB价值!

嘉为蓝鲸

CMDB 自动化运维 嘉为蓝鲸

交通银行签约易观千帆,全面升级数智能力

易观分析

金融 银行 经济

2023AIOTE智博会 第十五届上海国际智慧城市、物联网、大数据博览会

InfoQ_caf7dbb9aa8a

软件测试 | Header cookie处理

测吧(北京)科技有限公司

测试

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