“[Lightweight Function]” in the call stack

后端 未结 3 1461
你的背包
你的背包 2021-02-12 13:32

I\'m debugging a program (VS2008), and I was stepping through lines of code. I came across one line where a delegate function was being called, and I tried to step into it. Howe

相关标签:
3条回答
  • 2021-02-12 13:59

    Looks like this is a DynamicMethod. See this for some insight.

    I'm not sure about stepping into a dynamic method, though.

    0 讨论(0)
  • 2021-02-12 14:03

    Callstack for DynamicMethod (both in Debug and Release mode):

    [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
    

    Pure

    [Lightweight Function]

    frame can be observed when a delegate to a dynamic method is called.

    0 讨论(0)
  • 2021-02-12 14:10

    I believe a lightweight function refers to a DynamicMethod, i.e. one that is emitted at runtime, used, and then unloaded.

    This blog post is related to Iron Python, but the information should be good for any .NET project: Viewing Emitted IL. The author shows you how to use a lower level debugger (windbg.exe) to see these "lightweight functions."

    0 讨论(0)
提交回复
热议问题