“ [轻量功能]在调用堆栈中

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了“ [轻量功能]在调用堆栈中相关的知识,希望对你有一定的参考价值。

我正在调试程序(VS2008),并且正在逐步执行代码行。我碰到了一条正在调用委托函数的行,然后尝试进入该行。但是,没有像我期望的那样进入该方法,而是绕过了该方法,调试器改为进入了我认为是委托调用的函数。在调用堆栈中,我期望委托方法的行将以灰色显示,文字为[Lightweight Function]

“轻量功能”部分是什么意思?有没有办法进入此功能?

答案

我相信轻量级函数是指DynamicMethod,即在运行时发出,使用然后卸载的函数。

此博客文章与Iron Python有关,但是该信息对于任何.NET项目都应该有用:Viewing Emitted IL。作者向您展示了如何使用较低级别的调试器(windbg.exe)来查看这些“轻量级函数”。

另一答案

看起来像是DynamicMethod。有关详细信息,请参见this

不过,我不确定是否要采用动态方法。

另一答案

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

[轻量级功能]

当调用动态方法的委托时,可以观察到帧。

以上是关于“ [轻量功能]在调用堆栈中的主要内容,如果未能解决你的问题,请参考以下文章