在尝试查找异常的可能原因时,我正在使用Reflector跟踪代码路径。我已经越来越深入了,但最终得到的方法调用看起来像:
[MethodImpl(MethodImplOptions.InternalCall)]
private extern void SomeMethod(int someParameter);
该方法的这个标记告诉框架在某处调用C ++函数。有没有办法找出实际调用的方法,反过来又可能调用什么方法?
注意:我真的不想看到这个方法的源代码,我只是想知道可能会抛出异常的东西,我看到它来自这个方法调用。
答案 0 :(得分:3)
内部调用最终调用CLR中的C ++函数。您可以在Rotor source code中找到它们。查看clr \ src \ _vm \ ecall.cpp以查找从.NET可见名称到CLR函数名称的映射。请注意源已过时。
答案 1 :(得分:0)
如果要跟踪哪些方法可以抛出给定类型的异常,可以使用http://www.red-gate.com/products/Exception_Hunter/index.htm