En essayant de trouver la cause possible d’une exception, je suis un chemin de code en utilisant Reflector. J’ai de plus en plus profond, mais je me suis retrouvé à un appel de méthode qui ressemble à:
[MethodImpl(MethodImplOptions.InternalCall)] private extern void SomeMethod(int someParameter);
Ce balisage sur la méthode indique au framework d’appeler une fonction C ++ quelque part. Existe-t-il un moyen de savoir quelle méthode est appelée et d’autres méthodes susceptibles d’être appelées?
NB: Je ne veux pas vraiment voir le code source de cette méthode, je veux juste savoir ce qui pourrait renvoyer l’exception que je vois qui provient de cet appel à la méthode.
Les appels internes finissent par appeler une fonction C ++ dans le CLR. Vous pouvez les retrouver dans le code source du Rotor . Examinez clr \ src \ vm \ ecall.cpp pour rechercher le mappage du nom visible .NET au nom de la fonction CLR. Attention, la source commence à être datée.
Si vous voulez savoir quelles méthodes peuvent générer un type d’exception donné, vous pouvez utiliser http://www.red-gate.com/products/Exception_Hunter/index.htm.