【问题标题】:What the "EE" means in SOS?SOS 中的“EE”是什么意思?
【发布时间】:2014-02-17 03:42:58
【问题描述】:

我发现“EE”对我来说是一个神奇的词。

在 CLR 内部,有一个“EEClass”,它是由 CLR 类加载器创建的。而且不知道为什么叫EEClass。

现在,来到 SOS 世界,这里有更多的 EE,比如 EEHeap、EEStack [-EE]、Name2EE.... 它们在这里代表相同的含义吗?

【问题讨论】:

标签: .net windbg sos


【解决方案1】:

CLR 早在被用于运行 .NET 代码之前就已开始使用。最初是 Project 42 中的 Universal Runtime,这是一个失败的项目,但其部分在后续项目(如 .NET)中幸存下来。在演变为 .NET 的执行引擎之前,继续发展为 NGWS(下一代 Windows 服务)。 42 是该小组在微软园区工作的建筑编号。

几个首字母缩略词幸存下来,在 SSCLI20 源代码和您在调试器和头文件中看到的名称中非常明显。一小部分:

  • URT,通用运行时。古老的,它只保留在您从托管代码中获得的本机错误代码中,它们在 WinError.h 头文件中有设施代码 19,FACILITY_URT。这使得任何此类错误代码值为 0x8013xxxx。

  • COM+ 或 COMPlus。同样古老的是,COM+ 是 COM 的演变,以在中间件战争中输给 Java 和微软中主要负责 Project 42 的小组的名称而著称。在异常名称中仍然可见,包括任何 .NET 异常的本机异常代码:0xe0434f4d。 434f4d 是“COM”的 ASCII 码。 CLR 本身实际上使用的 COM 代码很少,只是从 pdb 和自定义托管、调试器和分析器接口生成堆栈跟踪。

  • COR,通用对象运行时。在 Project 42 位之后开始出现的首字母缩写词。存在于 SDK 头文件的所有名称中,例如 Cor.h、CorError.h、CorDebug.h 和几个托管 api 名称,例如 CorBindToRuntimeEx。顺便说一句,在 .NET 4 版本中重命名为“CLR”。

  • EE,执行引擎。出现在专门用于运行 .NET 代码的 CLR 部分的名称中。如你所见。

  • SOS,罢工之子。使用 DAC(数据访问组件)挂钩并显示内部 CLR 数据结构的调试器扩展。 Strike 是用于使 .NET 版本 1.0 运行的调试器扩展的名称,当时它的内部项目名称为 Lightning。闪电打击,你懂的。演变为通用调试工具,从而成为 Strike 之子。 DAC 可从 mscordacwks.dll 运行时支持 DLL 以及您在尝试加载使用不同 CLR 修订版创建的小型转储时收到的错误消息中看到。

内部项目名称在 .NET Framework 源代码中也很显眼。 .NET 1.0 是 Lightning,.NET 1.1 是 Everett,.NET 2.0 是 Whidbey,WPF 是 Avalon,WCF 是 Indigo。

目前正在进行一个涉及 CLR 的类似的高颜值项目。超级秘密,它的代号是Midori。除了它旨在实现基于托管代码的整个操作系统之外,对此知之甚少。对原本广为人知的 Singularity 原型的后续跟进。

猜你喜欢
  • 2011-07-19
  • 1970-01-01
  • 1970-01-01
  • 2011-08-12
  • 2017-06-11
  • 2018-03-05
  • 2023-03-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多