【问题标题】:Is it possible to link a method marked with MethodImplOptions.InternalCall to its implementation?是否可以将标有 MethodImplOptions.InternalCall 的方法链接到其实现?
【发布时间】:2010-05-05 18:04:03
【问题描述】:

在尝试查找异常的可能原因时,我正在使用 Reflector 遵循代码路径。我越来越深入,但最终得到了一个看起来像这样的方法调用:

[MethodImpl(MethodImplOptions.InternalCall)]
private extern void SomeMethod(int someParameter);

方法上的这个标记告诉框架在某处调用 C++ 函数。有什么方法可以找出实际调用了什么方法,进而可能调用什么方法?

注意:我真的不想看这个方法的源代码,我只想知道可能引发我看到的源自该方法调用的异常的可能事物。

【问题讨论】:

    标签: c# .net clr reflector


    【解决方案1】:

    内部调用最终会调用 CLR 中的 C++ 函数。您可以在Rotor source code 中找到它们。查看 clr\src\vm\ecall.cpp 以找到从 .NET 可见名称到 CLR 函数名称的映射。请注意来源已过时。

    【解决方案2】:

    如果你想追踪哪些方法可以抛出给定类型的异常,你可以使用http://www.red-gate.com/products/Exception_Hunter/index.htm

    【讨论】:

    • 我知道那个工具。它是否还检测到由于框架的 C++ 函数中的代码而引发的异常(例如,这一行中的一个 throw -> koders.com/cpp/…)?
    猜你喜欢
    • 2013-12-07
    • 1970-01-01
    • 2021-10-31
    • 2014-12-28
    • 1970-01-01
    • 2021-11-20
    • 1970-01-01
    • 2023-04-06
    • 1970-01-01
    相关资源
    最近更新 更多