"EE"在SOS中意味着什么?

Tig*_*ing 22 .net windbg sos

我发现"EE"对我来说是一个神奇的词.

在CLR内部,有一个"EEClass",它由CLR类加载器创建.而且我不知道它为何被称为EEClass.

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

Han*_*ant 41

CLR在运行.NET代码之前很久就开始了.作为项目42中的通用运行时开始,这是一个失败的高级项目,但其部分在后续项目中幸存下来,如.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,公共对象运行时.项目42位后开始出现的首字母缩略词.存在SDK头文件的所有名称,如Cor.h,CorError.h,CorDebug.h和几个托管api名称,如CorBindToRuntimeEx.在btw的.NET 4版本中重命名为"CLR".

  • EE,执行引擎.出现在CLR的部分名称中,这些部分专门用于运行.NET代码.你发现了.

  • SOS,罢工之子.一种调试器扩展,它使用DAC(数据访问组件)挂钩并显示内部CLR数据结构.Strike是用于获得.NET 1.0版本的调试器扩展名,当它具有内部项目名称Lightning时.照明打击,你得到它.演变为一般调试工具,从而成为Strike的儿子.从mscordacwks.dll运行时支持DLL和您尝试加载使用不同CLR修订版创建的minidump时获得的错误消息可以看到DAC.

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

目前正在进行一项涉及CLR的类似高污染项目.超级秘密,其代号为Midori.人们对此知之甚少,除了它旨在实现基于托管代码的整个操作系统.关于其他出版的Singularity原型的后续跟进.

  • [Joe Duffy的博客上有一系列有关(现在已结束)Midori项目的有趣文章。](http://joeduffyblog.com/2015/11/03/blogging-about-midori/) (3认同)