Est-il possible de déboguer ce qui se passe après mon code .NET appelle une fonction dans une dll non géré via dllimport?

voix
4

Est-il possible de déboguer ce qui se passe après mon code .NET appelle une fonction dans une dll non géré via dllimport?

J'expose une fonction dll dans un environnement non géré via dllimport. Quand j'appelle une fonction que je fais un pas dans le code, il arrive quelque chose et il ne retourne jamais.

Est-ce que je peux faire, peut-être avec une vue de débogage ou quoi que ce soit pour obtenir des renseignements? Ou suis-je SOL?

Créé 27/08/2009 à 03:28
source utilisateur
Dans d'autres langues...                            


1 réponses

voix
6

Eh bien, pour commencer, assurez-vous que vous avez le débogage de code natif activé dans l'onglet débogage des propriétés de votre projet.

Si vous avez le code source de la DLL que vous appelez dans, alors vous devriez être en mesure de le configurer de sorte que vous pouvez entrer dans la DLL native comme vous pouvez le code managé. La meilleure façon de le faire est d'ajouter le code source pour la DLL native dans la même solution, puis créer un lien vers la sortie de ce projet. Vous devez vous assurer que Visual Studio peut accéder à la fois la DLL native et que la pdb de DLL lors de l'exécution de votre application C #.

Si vous ne disposez pas du code source de la DLL, alors je vous suggère de mettre un point d' arrêt juste avant l'appel à la méthode native. Ensuite, laissez le programme poursuivre et mettre en pause le programme manuellement après une seconde ou deux. Assurez - vous que vous êtes toujours dans le même thread qui a appelé dans la DLL native, puis regarder le spectateur de la pile d'appels. Si vous voyez une ligne qui dit : « [Code externe] », assurez - vous que « Afficher le code externe » est cochée dans le menu contextuel. Lorsque cela est cochée, la pile d'appel peut être en mesure de vous dire quelle méthode est en cours d' exécution. Le texte sera en gris, ce qui indique que le procédé se trouve dans une DLL externe. Si vous faites des appels de méthode Windows, puis l' installation de Windows fichiers de symboles peut d' abord permettre au débogueur de vous donner plus d' informations ( http://www.microsoft.). Vous pouvez également mettre en pause et continuer le débogueur plusieurs fois pour voir ce que la pile d'appel ressemble à différents points d'exécution. A partir de ces informations, vous pourrez peut-être avoir une idée de ce qui se passe mal.

Aussi, essayez de passer dans les différents arguments, en commençant par le cas le plus trivial et vous pouvez voir si vous obtenez le même comportement. Enfin, assurez-vous absolument sûr que vous avez toutes vos métadonnées de triage correcte.

Créé 27/08/2009 à 04:40
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more