写点什么

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

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

关注

评论

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

MobPush智能消息推送能力大集结,国内外消息触达通道来了!

MobTech袤博科技

消息推送

YashanDB condition语法

YashanDB

数据库 yashandb

a16z合伙人:语音交互将成为AI应用公司最强大的突破口之一,巨头们在B2C市场已落后太多丨Voice Agent 学习笔记

声网

电商新趋势,从“真人一键克隆”数字人进军直播间开始

脑极体

AI

没有数据湖?可观测性也许不再有效!

观测云

数据湖 可观测性

MobPush用户分群功能全新升级,精准触达每一位用户

MobTech袤博科技

消息推送 mobpush 消息推送系统

YashanDB连接运算符

YashanDB

数据库 yashandb

YashanDB比较运算符

YashanDB

数据库 yashandb

YashanDB逻辑运算符

YashanDB

数据库 yashandb

macOS Sonoma 14.7.5 (23H527) Boot ISO 原版可引导镜像下载

sysin

macos

迈向云原生:理想汽车 OLAP 引擎变革之路

镜舟科技

大数据 云原生 OLAP 镜舟数据库 理想汽车

SLS 重磅升级:超大规模数据实现完全精确分析

阿里巴巴云原生

阿里云 云原生 日志服务

2025首批!腾讯云AI代码助手斩获信通院可信AI智能编码工具最高等级认证!

腾讯云代码助手

AI

YashanDB位运算符

YashanDB

数据库 yashandb

百度推出端到端语音大模型,支持方言、可打断、电话语音成本砍半;雷神 AI 眼镜发布:语音助理+摄像头,1799 元起丨日报

声网

YashanDB compile_clause语法

YashanDB

数据库 yashandb

从“新农人”到“买菜团长”,拼多多激发电商就业生态二次繁荣

Alter

如何快速搭建自己的个人网站?Hexo、VuePress 和 WordPress 大比拼!

程序员晚枫

征文大赛 |「码」上数据库—— KWDB 2025 创作者计划启动

KaiwuDB

活动 推广 报名 kwdb数据库

高配置的七彩虹将星X18 Max游戏本来了,来打造专属你的电竞之夜!

E科讯

JVM实战—JVM垃圾回收器的原理和调优

不在线第一只蜗牛

JVM

MobTech受邀出席年度DevFest 谷歌开发者节

MobTech袤博科技

消息推送 消息推送系统

YashanDB RegExp语法

YashanDB

数据库 yashandb

MobTech受邀出席鸿蒙生态伙伴SDK开发者论坛

MobTech袤博科技

鸿蒙 os

YashanDB constraint语法

YashanDB

数据库 yashandb

RAG 调优指南:Spring AI Alibaba 模块化 RAG 原理与使用

阿里巴巴云原生

阿里云 云原生 云原生微服务

全流程覆盖,闭环管理:中烟创新案卷评审评查系统实现精细化管理

中烟创新

全链路、全通道、多维度,MobPush后效折损分析功能确实太全面了

MobTech袤博科技

消息推送 mobpush 消息推送系统

YashanDB算术运算符

YashanDB

数据库 yashandb

YashanDB dblink语法

YashanDB

数据库 yashandb

macOS Sequoia 15.4 (24E248) Boot ISO 原版可引导镜像下载

sysin

macos

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