J'ai un projet (A) qui référence un assemblage à partir d'une bibliothèque de classe de projet externe (B) située dans une autre solution.
Je n'ai pas encore compris comment je peux déboguer efficacement la bibliothèque de classes de B tout en exécutant le programme du projet A. Y a-t-il quelque chose que je dois activer sur le projet B tel que les informations de débogage, etc.
Merci d'avance.
Essayez de désactiver Just My Code (JMC).
Par défaut, le débogueur essaie de restreindre la vue du monde au code contenu uniquement dans votre solution. C’est parfois très utile, mais lorsque vous souhaitez déboguer du code qui n’est pas dans votre solution (comme dans votre cas), vous devez désactiver JMC pour pouvoir le voir. Sinon, le code sera traité comme externe et en grande partie caché de votre vue.
MODIFIER
Lorsque vous êtes brisé dans votre code, essayez ce qui suit.
Cela me dérange depuis un certain temps. Ce que je finis généralement par faire est de reconstruire ma bibliothèque externe en mode débogage, puis de copier le fichier .dll et le fichier .pdb dans le bac de mon site Web. Cela me permet d’entrer dans le code de la bibliothèque.
Assumer le chemin de
Projet A
C:\Projects\ProjectA
Projet B
C:\Projects\ProjectB
et la dll de ProjectB est en
C:\Projects\ProjectB\bin\Debug\
Pour déboguer dans ProjectB
à partir de ProjectA
, procédez comme suit:
B
avec le .PDB
de la dll dans le répertoire de compilation de ProjectA
. ProjectA
. Lorsque le code atteint la partie où vous devez appeler la méthode ou les événements de la DLL, etc. pendant le débogage, appuyez sur F11
pour entrer dans le code de la DLL. REMARQUE: NE MANQUEZ PAS DE COPIER LE FICHIER .PDB
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:\<path-to-main> \bin\$(ConfigurationName)\$(TargetName).dll"
copy /y "$(TargetDir)$(TargetName).pdb" "C:\<path-to-main> \bin\$(ConfigurationName)\$(TargetName).pdb"
Déboguer:
Démarrer le programme externe: C:\<path-to-main>\bin\debug\<AppName>.exe
Répertoire de travail C:\<path-to-main>\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 je lance le débogage à partir du projet de la DLL externe, l'application principale s'exécute, mais le débogueur atteint uniquement les points d'arrêt de la DLL externe. Si j'appuie sur debug à partir du projet principal, l'application principale s'exécute avec la DLL externe la plus récente, mais le débogueur ne touche plus 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.
J'avais un problème similaire car mes points d'arrêt dans le projet (B) n'étaient pas touchés. Ma solution était de reconstruire le projet (B), puis de 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.
[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 Visual Studio" dans le champ "Code source", ainsi que le chemin d'accès 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 celui-ci.