Можно ли связать метод, помеченный MethodImplOptions.InternalCall, с его реализацией? - PullRequest
4 голосов
/ 05 мая 2010

Пытаясь найти возможную причину исключения, я иду по пути кода, используя Reflector.Я все глубже и глубже, но в конечном итоге на вызов метода, который выглядит следующим образом:

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

Эта разметка в методе говорит каркасу для вызова функции C ++ где-нибудь.Есть ли способ узнать, какой метод на самом деле вызывается, и, в свою очередь, что еще может быть вызвано?

Примечание: я не хочу видеть исходный код этого метода,Я просто хочу знать возможные вещи, которые могут вызвать исключение, которое я вижу, которое происходит из этого вызова метода.

Ответы [ 2 ]

3 голосов
/ 05 мая 2010

Внутренние вызовы заканчиваются вызовом функции C ++ в CLR. Вы можете найти их обратно в исходном коде Rotor . Посмотрите на clr \ src \ vm \ ecall.cpp, чтобы найти сопоставление видимого имени .NET с именем функции CLR. Остерегайтесь того, что источник датируется.

0 голосов
/ 27 мая 2010

Если вы хотите отследить, какие методы могут генерировать исключение данного типа, вы можете использовать http://www.red -gate.com / products / Exception_Hunter / index.htm

...