大家都知道,在调试托管代码时,一定会加载到sos/clr/mscorwks/mscordacwks这些动态库,才能够很好的完成我们的调试工作,那么他们的版本对应关系是怎样的呢,特别是clr.dll/mscorwks.dll有什么关系呢?

clr是通用语言运行时库,对应的就是clr.dll/mscorwks.dll,在clr发展过程中,文件名发生了变化,他们的版本对应关系如下:

.NET framework 版本 CLR 版本 CLR 文件名
1.1 1.1 mscorwks.dll
2.0 2.0 mscorwks.dll
3.0 2.0 mscorwks.dll
3.5 2.0 mscorwks.dll
4.0 4.0 clr.dll
4.5 4.0 clr.dll

我们在进行托管代码调试时,还会使用到sos.dll和mscordacwks.dll这两个动态库:

  • SOS.dll
    SOS 调试扩展 (SOS.dll) 通过提供有关内部公共语言运行时 (CLR) 环境的信息,帮助你在 Visual Studio 和 Windows 调试器 (WinDbg.exe) 中调试托管程序。
  • mscordacwks.dll
    这是进行调试的数据访问组件 (DAC) 。SOS和CLR调试器使用 Data Access Component (DAC)来实现进程外调试,DAC原则上可以视做CLR执行引擎的子集。它能用在转储文件上,甚至是在CLR未安装的机器上面工作,其实现主要包括一组宏和模板,结合执行引擎代码的条件编译。当编译runtime时,clr.dll和mscordacwks.dll同时生成。为了检索对象,DAC可以读取其内存,获取mscordacwks中VM代码的输入。 然后,它可以在宿主机中运行相应的函数来计算有关托管结构所需的信息,并将最终结果返回给调试器。
    请注意。DAC需要读取对象进程的内存。调试进程和调试对象进程是独立的,地址空间也是独立的。因此需要清楚的区分对象内存和宿主(调试器)内存。在宿主进程中使用目标地址结果无法预料,通常情况下是错误的结果。当使用DAC检索目标内存时,在正确的地址空间中使用目标地址时十分重要的,此外,有时目标地址严格用作数据,在这种情况下,使用主机地址同样不正确,比如,要显示一个托管函数的信息,可能需要列出开始的地址,地址大小。当在VM文件夹下编辑DAC可能运行的代码时,需要正确的选择宿主地址或者目标进程地址。

请注意  对于所有版本的.NET Framework 中,该 DAC 的文件名是 mscordacwks.dll,,SOS 调试扩展的文件名为 sos.dll。

若要验证 mscordacwks.dll 版本与应用程序使用的 clr 的版本相匹配,请输入以下命令以显示有关已加载的 CLR 模块信息之一:

  • lmv mclr (适用于 CLR 版本 4.0)
  • lmv mscorwks (适用于版本 1.0 或 2.0 CLR)

最新文章

  1. Windows下 VM12虚拟机安装OS X 10.11 和VM TOOLS
  2. POJ3020 匹配
  3. 51nod1066(bash博弈)
  4. (转)JAVA 调用matlab
  5. ViewPager滑动页面的实现方法
  6. 又是干货,这个春节感觉吃饱了。各方面---RHCS集群理论
  7. 基于visual Studio2013解决C语言竞赛题之0403字符统计
  8. Linux账号管理(一)
  9. 基于python第三方requests 模块的HTTP请求类
  10. js入门实例
  11. Python内置函数详解
  12. 3.5 find() 判断是否存在某元素
  13. Pat1108: Finding Average
  14. idea如何快速查看接口的实现类
  15. js: var定义域问题
  16. vue 路由参数变化,页面不更新的问题
  17. JavaScript -- Document-open
  18. ds18b20驱动及应用程序
  19. 使用node连接MongoDB数据 综本地及linux服务器记
  20. shell 无限循环输出时间

热门文章

  1. LaTeX 小试牛刀
  2. mybatis插入数据后返回自增主键ID详解
  3. Debian忘记密码重置
  4. 理解 BLS 签名算法
  5. 3.Javascript实现instanceof
  6. 详解js中的this指向
  7. Java 之 Arrays 类
  8. OpenFire后台插件上传获取webshell及免密码登录linux服务器
  9. i18n,国际化翻译,excel与js互转
  10. Flink Time深度解析(转)