2009-07-29 4 views
2

J'ai une DLL C native qui appelle 'LoadLibrary' pour charger une autre Dll sur laquelle l'indicateur/clr est activé. J'utilise ensuite 'GetProcAddress' pour obtenir une fonction et l'appeler sur une DLL chargée dynamiquement. Je voudrais entrer dans la bibliothèque dynamique dans le débogueur, mais les symboles ne se chargent jamais. Une idée?Débogage C++ managé en C++ natif

Et je l'ai dit que je utilise Visual Studio 2008.

Mise à jour: Merci à quelques conseils ci-dessous, j'ai changé le débogage de projet mixte. Ça n'a pas marché, mais je pense savoir pourquoi. Je développe un addin à une application existante. L'application à laquelle je me connecte démarre un exe puis commence un autre. Je dois donc utiliser "Attach to process" pour lancer le débogueur. Ma conjecture lance le débogueur de cette façon par défaut "Auto". Existe-t-il un moyen de modifier le comportement par défaut de VS pour utiliser le débogage "Mixte"?

Répondre

4

Cela vient de VS2008, mais si je me souviens bien, VS2005 était similaire. Dans les propriétés du projet natif, sous "Configuration Properties-> Debugging", il y a un "Debugger Type" qui est défini sur "Auto" par défaut. Vous devrez le changer en "Mixte", car VS n'est pas assez intelligent pour réaliser que vous avez besoin d'un débogage géré

1

J'ai eu des expériences mitigées avec ce genre de choses dans VisualStudio. Vous pourriez envisager d'utiliser ProcMon pour voir où VisualStudio recherche le fichier PDB. Alternativement, vous pouvez essayer d'utiliser WinDbg. Il semble faire mieux de charger les symboles et si ce n'est pas le cas, vous pouvez les charger explicitement. L'utilisation de WinDbg implique une courbe d'apprentissage abrupte, mais si vous êtes en train de brûler du temps en ce moment, cela ne vaut-il pas le coup?

Vous pouvez également exécuter l'exe seul et à partir de la source de la DLL gérée, attachez-le au processus pour le déboguer.

1

Modifiez la DLL en mode mixte pour lancer une exception CLR où elle entre le premier code que vous êtes intéressé par le débogage. Cela devrait vous donner l'opportunité de lancer le débogueur géré.

1

Dans VS2005, il existe des options par projet pour activer les débogueurs natifs et CLR séparément. Vous devrez peut-être activer le débogueur CLR pour le projet dll natif à partir duquel vous démarrez le débogueur.