2010-08-27 3 views
6

Je suis actuellement la chasse aux bugs et j'ai besoin de déboguer dans une DLL spécifique dans la configuration de la version dans Visual Studio 2005. À un moment donné, j'ai fermé la solution, fait d'autres choses et l'ai rechargé. À partir de ce moment, mon point de coupure ne me touche plus et je reçois le fameux message «Aucun symbole n'a été chargé ...». J'ai donc ouvert la fenêtre des modules et la DLL que je veux déboguer n'apparaît plus dans la liste, donc je ne peux pas charger les symboles manuellement. L'application se comporte normalement, donc je suis absolument sûr que la DLL doit avoir été chargée pour exécuter certaines fonctions. Effectivement, si je renommer la DLL et démarrer l'application, il ne fonctionne plus, donc il doit aussi être la bonne DLL.Pourquoi la DLL chargée est-elle manquante dans la liste des modules de Visual Studio?

J'ai essayé de configurer le projet dll comme projet de démarrage et la commande à exécuter à l'exe de l'application et le démarrage de l'application à partir de studio visuel extérieur, puis attacher au processus, tout en vain.

La question est la suivante: pourquoi la DLL n'apparaît-elle pas dans la liste des modules chargés alors qu'elle doit avoir été chargée? Je ne peux pas penser à d'autres changements que j'ai faits, qui pourraient causer cela, ai-je raté quelque chose? (Peut-être quelque chose de vraiment évident?)

Toute aide appréciée!

Répondre

1

J'ai rencontré un numéro similaire après avoir transféré un projet d'un ordinateur à un autre. Je vais simplement expliquer ce que j'ai découvert et comment je l'ai corrigé, et vous pouvez déterminer s'il correspond à votre problème et solution.

  1. L'ordinateur de travail sur lequel j'ai écrit une application contenait un fichier .dll auquel mon programme faisait référence. Après avoir déplacé l'application sur mon ordinateur personnel, l'application n'a plus pu localiser le fichier .dll auquel elle faisait référence parce que le fichier n'était plus là.

  2. L'application compilée et exécutée même sans la ressource référencée (fichier .dll) car l'assembly précédemment compilé (dossier de débogage) contenait sa propre copie du fichier .dll et d'autres ressources. En termes simples, c'est l'ancienne version de l'assemblage qui est en cours d'exécution et non l'application en cours sur laquelle vous travaillez. C'est aussi la raison pour laquelle cette erreur a tendance à suspendre la fenêtre du concepteur et à renvoyer une erreur après l'exécution de l'application.

je prendrais un coup d'œil à l'adresse suivante:

a) Sous Explorateur de solutions, allez dans le Références dossier et cliquez droit sur le nœud de référence manquant et sélectionnez propriétés. Dans la zone de propriétés, observez le chemin de la ressource référencée. La ressource est-elle toujours située sur ce chemin?

b) Vérifiez le dossier de débogage pour obtenir une copie de la ressource que vous recherchez. Si la ressource est , faites une copie et enregistrez-la sur votre bureau. Si c'est pas là, obtenir le fichier de la source d'origine.

c) Sous l'Explorateur de solutions, cliquez droit 'Propriétés' et 'ouvert. Dans le menu qui apparaît, sélectionnez 'Ressources' à partir de la gauche et en haut de la nouvelle fenêtre qui apparaît, vous devriez voir 'Ajouter ressource' avec une petite flèche déroulante. Cliquez sur la flèche et sélectionnez 'Ajouter un fichier existant', puis et accédez au fichier . Si vous ne le voyez pas, vous devrez peut-être modifier le fichier en cours de navigation à partir de la petite liste déroulante située au-dessus des boutons «Ouvrir» et «Annuler». Une fois le fichier localisé, il doit créer un nouveau dossier dans l'explorateur de solution appelé «ressources». Maintenant, le fichier est une partie permanente de votre application et pas simplement une référence à celui-ci.

1

J'ai eu le même problème aujourd'hui avec Visual Studio 2008. Je travaillais avec un simple testeur pour tester une nouvelle méthode dans un ensemble. Donc ajouté une référence à mon assembly j'ai écrit le code pour charger l'assembly et appeler la nouvelle méthode, build, tout va bien. Mais pendant l'exécution, le débogueur lançait une exception disant que la nouvelle nouvelle méthode n'existait pas et que la fenêtre des modules était vide.

Il s'avère que l'assembly que je modifiais était dans le GAC et utilisait à la place du nouveau dans mon répertoire de construction.

Questions connexes