Comment déboguer des projets de bibliothèque de classes externes dans Visual Studio?

J’ai un projet (A) qui référence un assembly à partir d’une bibliothèque de classe de projet externe (B) située dans une autre solution vs.

Je n’ai pas encore compris comment je peux efficacement déboguer la bibliothèque de classes à partir de B pendant l’exécution du programme du projet A. Y a-t-il quelque chose que je dois activer sur le projet B

Merci d’avance.

Essayez de désactiver Just My Code (JMC).

  • Outils -> Options -> Débogueur
  • Décochez la case “Activer juste mon code”

Par défaut, le débogueur tente de restreindre la vue du monde au code contenu uniquement dans votre solution. C’est vraiment très utile parfois, mais lorsque vous souhaitez déboguer du code qui ne se trouve pas dans votre solution (comme c’est votre cas), vous devez désactiver JMC pour le voir. Sinon, le code sera traité comme externe et largement caché de votre vue.

MODIFIER

Lorsque vous êtes cassé dans votre code, essayez ce qui suit.

  • Debug -> Windows -> Modules
  • Trouvez la DLL du projet qui vous intéresse
  • Clic droit -> Charger les symboles -> Sélectionnez le chemin vers la .PDB pour votre autre projet

Cela me gêne depuis un certain temps. En général, je finis par reconstruire ma bibliothèque externe en utilisant le mode débogage, puis copiez à la fois le fichier .dll et le fichier .pdb dans la corbeille de mon site Web. Cela me permet d’entrer dans le code de la librairie.

Je lance deux instances de Visual Studio – une pour la DLL externe et une pour l’application principale.
Dans les propriétés du projet de la DLL externe, définissez les éléments suivants:

Construire des événements:

  • copy /y "$(TargetDir)$(TargetName).dll" "C:\ \bin\$(ConfigurationName)\$(TargetName).dll"

  • copy /y "$(TargetDir)$(TargetName).pdb" "C:\ \bin\$(ConfigurationName)\$(TargetName).pdb"

Déboguer:

  • Démarrez le programme externe: C:\\bin\debug\.exe

  • Répertoire de travail C:\\bin\debug

De cette façon, chaque fois que je construis la DLL externe, elle est mise à jour dans le répertoire de l’application principale. Si j’atteins le débogage du projet de la DLL externe, l’application principale s’exécute, mais le débogueur n’atteint que les points d’arrêt dans la DLL externe. Si j’accède au débogage à partir du projet principal, l’application principale s’exécute avec la DLL externe la plus récente, mais à présent, le débogueur n’atteint que les points d’arrêt du projet principal.

Je me rends compte qu’un débogueur fera le travail pour les deux, mais je trouve plus facile de garder les deux droites de cette façon.

Assumer le chemin de

Projet A

 C:\Projects\ProjectA 

Projet B

 C:\Projects\ProjectB 

et le dll de ProjectB est en

 C:\Projects\ProjectB\bin\Debug\ 

Pour déboguer dans ProjectB partir de ProjectA , procédez comme suit:

  1. Copiez la DLL de B avec le .PDB de dll dans le .PDB de .PDB de ProjectA .
  2. Déboguer maintenant ProjectA . Lorsque le code atteint la partie où vous devez appeler la méthode ou les événements de dll, etc. pendant le débogage, appuyez sur F11 pour entrer dans le code de la DLL.

REMARQUE: NE MANQUEZ PAS À COPIER LE FICHIER .PDB

[selon Martin Beckett, le gars qui m’a envoyé cette réponse]

Vous pouvez déboguer dans une bibliothèque externe.

Dans l’onglet Paramètres du projet, recherchez les «répertoires visuels de studio» dans le champ «code source» et indiquez le chemin d’access aux sources openCV. Assurez-vous ensuite que les fichiers .pdb de chacune des DLL de débogage se trouvent dans le même répertoire que la DLL.

J’avais un problème similaire car mes points d’arrêt dans le projet (B) n’étaient pas touchés. Ma solution consistait à reconstruire le projet (B) puis à déboguer le projet (A) car les DLL devaient être mises à jour.

Visual Studio devrait vous permettre de déboguer dans une bibliothèque externe.