C# &引用;[轻量级功能]”;在调用堆栈中

C# &引用;[轻量级功能]”;在调用堆栈中,c#,.net,visual-studio-2008,callstack,C#,.net,Visual Studio 2008,Callstack,我正在调试一个程序(VS2008),我正在逐行调试代码。我遇到一行调用委托函数的地方,我试着进入其中。但是,没有像我预期的那样进入该方法,而是绕过了该方法,调试器进入了我假设是由委托调用的函数。在调用堆栈中,我希望委托方法所在的行用文本[Lightweight Function]显示为灰色 “轻量级功能”部分是什么意思?有没有办法进入这个函数?我相信轻量级函数是指一个在运行时发出、使用然后卸载的函数 这篇博文与Iron Python有关,但这些信息应该适用于任何.NET项目:。作者向您展示了如何

我正在调试一个程序(VS2008),我正在逐行调试代码。我遇到一行调用委托函数的地方,我试着进入其中。但是,没有像我预期的那样进入该方法,而是绕过了该方法,调试器进入了我假设是由委托调用的函数。在调用堆栈中,我希望委托方法所在的行用文本
[Lightweight Function]
显示为灰色


“轻量级功能”部分是什么意思?有没有办法进入这个函数?

我相信轻量级函数是指一个在运行时发出、使用然后卸载的函数

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

看起来这是一个很好的例子。请参阅以获得一些见解


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

调用Stack for DynamicMethod(在调试和发布模式下):

纯洁的

[轻量级功能]


调用动态方法的委托时可以观察到框架。

天啊,第一个Visual Studio告诉我“此代码是由工具生成的”,现在它调用我的函数“轻量级”?多好的态度啊!:)检查编译设置,可能已启用优化,并且函数可以得到优化(内联)
[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