CLR托管问题,内存+断点映射(lldb+windbg)

💡 原文中文,约1900字,阅读约需5分钟。
📝

内容提要

在CLR中,函数运行在内存映射范围内,但断点可能导致内存映射失败。作者通过windbg和lldb观察了Windows和Linux平台下的内存映射代码。在Windows平台上,m_CodeHeaderRW等于m_CodeHeader时,不执行内存映射。而在Linux下,使用的是Linux环境下的mmap进行内存映射,不存在断点内存映射范围内的失败。需要进一步验证win平台下m_CodeHeader的赋值来源以及为何Linux下的托管断点会失败。

🎯

关键要点

  • 在CLR中,函数运行在内存映射范围内,尤其是托管的Main函数及大部分函数。
  • 内存范围内的断点可能导致内存映射失败,从而引发异常。
  • 在Windows平台上,通过windbg观察到,当m_CodeHeaderRW等于m_CodeHeader时,不执行内存映射。
  • 在Linux平台上,使用mmap进行内存映射,不存在断点导致的内存映射失败。
  • 需要进一步验证Windows平台下m_CodeHeader的赋值来源,以及Linux下托管断点失败的原因。
➡️

继续阅读