Mar*_*ark 9 .net debugging visual-studio
我有以下简单的代码:
class Program
{
static void Main(string[] args)
{
var t = Type.GetType("System.Reflection.Assembly");
Console.WriteLine(t.FullName);
}
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试调试Type.GetType()方法,但即使使用"Step Into",调试器也会跳过该方法.我已经为.NET Framework类启用了调试,并且对其他框架方法的调试工作正常.为什么调试器不允许我进入这个特定的方法?
因为Type.GetType()内联到此:
[MethodImpl(MethodImplOptions.InternalCall), SecuritySafeCritical]
public extern Type GetType();
Run Code Online (Sandbox Code Playgroud)
换句话说,该方法在CLR内部用C++实现.InternalCall属性值是键.参考源不提供CLR的源代码.你可以使用SSCLI20源代码作为参考,它是一个非常好的匹配CLR源,但你不能相信它是完全准确的,它不再维护.clr/src/vm/ecall.cpp源代码文件包含从InternalCall名称到C++函数名称的映射.
| 归档时间: |
|
| 查看次数: |
169 次 |
| 最近记录: |