CLR托管问题,内存+断点映射(lldb+windbg)
原文中文,约1900字,阅读约需5分钟。发表于: 。前言在CLR里面几乎所有的函数都运行在内存映射的范围内,至少托管的Main函数及其它大部分是如此。以上如有疏漏,可不吝指教。概括但这就带来一个问题,内存范围内断点会导致了内存映射的失败,而出现异常。为啥.Net程序在运行的时候,不会出现这个状况呢?关于这一点可以参考上一篇文章:绝顶技术:断点+内存映射组合的CLR超强BUG?为了验证这个状况,首先看下windows平台,通过windbg来看下。内存...
在CLR中,函数运行在内存映射范围内,但断点可能导致内存映射失败。作者通过windbg和lldb观察了Windows和Linux平台下的内存映射代码。在Windows平台上,m_CodeHeaderRW等于m_CodeHeader时,不执行内存映射。而在Linux下,使用的是Linux环境下的mmap进行内存映射,不存在断点内存映射范围内的失败。需要进一步验证win平台下m_CodeHeader的赋值来源以及为何Linux下的托管断点会失败。