在调用栈“[轻型功能]”(“[Lightweight Function]” in the call

2019-08-03 04:29发布

我调试程序(VS2008),我是通过代码行。 我碰到一个行,其中一个委托函数被调用,我试图踏进去。 然而,而非步入如我所料的方法,该方法被绕过了,与调试器,而不是步入我认为是一个由委托调用的函数。 在调用栈,其中,I预期委托方法将线路上与该文本变灰[Lightweight Function]

什么是“轻量级功能”的一部分呢? 有没有办法踏进这个功能呢?

Answer 1:

相信轻质功能是指一个DynamicMethod的 ,即发射的在运行时,使用,和然后卸载即,一个。

本博客文章涉及铁Python,但该信息应该是很好的任何.NET项目: 观看发射IL 。 笔者向您介绍如何使用较低级别的调试器(WINDBG.EXE)看到这些“轻量级功能。”



Answer 2:

看起来这是一个DynamicMethod的 。 见这对一些见解。

我不知道在步入一个动态的方法,虽然。



Answer 3:

调用堆栈的DynamicMethod的(无论是在调试和发布模式):

[Lightweight Function]  
[Native to Managed Transition]  
mscorlib.dll!System.Reflection.Emit.DynamicMethod.Invoke(object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, object[] parameters, System.Globalization.CultureInfo culture) + 0x199 bytes

【轻量化功能]

一个委托给动态方法调用可以观察帧。



文章来源: “[Lightweight Function]” in the call stack