web-dev-qa-db-fra.com

Débogage à travers différentes solutions dans Visual Studio

Actuellement, j'ai la solution A qui contient une base de couche de domaine et la solution B qui référence les fichiers binaires de la solution A. Existe-t-il un moyen de déboguer directement de l'un à l'autre avec deux instances de visual studio ouvertes (une pour chaque solution). J'ai lu que vous pouvez simplement ajouter les projets existants de la solution A à la solution B. Existe-t-il une autre solution qui fonctionne? J'ai essayé d'associer directement la solution A à l'exécutable en cours d'exécution dans la solution B mais cela ne me permet pas d'attacher plusieurs débogueurs à la même application. 

Je dois noter que lorsque j'interviens dans un élément, le code de la solution A dans l'instance de Visual studio de la solution B s'affiche automatiquement. Je suppose que cela est acceptable, mais vous ne pouvez pas simplement définir des points d'arrêt arbitraires et attendre la code pour les frapper de cette façon.

Merci

42
Chris Cap

Il n'y a aucun moyen d'avoir 2 instances de Visual Studio déboguant le même processus. Il s’agit d’une limitation de Windows et de la plupart des autres systèmes d’exploitation, car au plus un processus peut en déboguer un autre. 

C'est un scénario parfaitement supporté pour déboguer des binaires qui ne font pas partie de votre solution. Comme vous l'avez noté, vous pouvez facilement accéder aux fichiers binaires de la solution B pendant le débogage à partir d'une solution A. 

La fonctionnalité de débogage nommée "Just My Code" est toutefois un élément qui gênera ici. Cette fonctionnalité vise à minimiser l'expérience de débogage en ne codant que le code de votre solution. Idéal pour les solutions normales mais mauvais lorsque vous déboguez des fichiers binaires arbitraires. Cela cause probablement beaucoup de problèmes autour des points de rupture que vous voyez. Vous voudrez le désactiver en procédant comme suit

  • Outils -> Options -> Débogage 
  • Décoché "Activer uniquement mon code"
33
JaredPar

Vous ne pouvez avoir qu'un seul débogueur déboguant un processus à la fois. Cela signifie donc qu’une seule instance de Visual Studio doit être ouverte.

Toutefois, vous pouvez simplement ouvrir le fichier .cpp/.cs/any de la solution B dans la copie de Visual Studio de la solution A et définir des points d'arrêt. Cela fonctionnera toujours même si ces fichiers ne font pas réellement partie de la solution.

17
Dean Harding

Que faire si vous chargez explicitement les symboles de la solution A?

Si vous allez dans Outils-> Options-> Débogage-> Symboles, vous pouvez le pointer vers le fichier .pdb de la solution A.

Ensuite, vous pouvez voir si les symboles sont chargés à partir de vos fichiers binaires en allant dans Debug-> Windows-> Modules pendant le débogage.

14
Chris

C'est peut-être tard, mais c'est pour tous ceux qui ont encore besoin d'une solution réelle et simple. Il suffit de modifier les propriétés de votre solution pour utiliser le paramètre Projets de démarrage multiples et définir le projet à démarrer simultanément.

Suivez ce lien

Déboguer plusieurs projets en même temps dans Visual Studio

2
CB4

Il existe une solution simple pour cela.

Ouvrez les deux fichiers de solution et exécutez-le. Arrêtez la deuxième instance de solution à attacher au processus, mais assurez-vous que les ports sont en cours d'exécution. Vous pouvez maintenant attacher un processus de port à la première instance de solution et déboguer comme par magie.

1
user3048773

Voici ce que j'ai fait. 

Dites un projet de la solution A fait référence à un projet de la solution B et je souhaite déboguer dans le projet de la solution B du projet de la solution A.

Ouvrez la solution B dans Visual Studio. Définissez les propriétés du projet sur "Utiliser le serveur local IIS Wb", définissez l'URL du projet et créez un répertoire virtuel.

Ouvrez la solution A dans une autre instance de Visual Studio. Définissez les propriétés du projet sur "Utiliser le serveur local IIS Wb" et cochez la case "Utiliser IIS Express", définissez l'URL du projet et créez le répertoire virtuel.

Appuyez sur F5 et démarrez le débogage de l'instance Solution B de Visual Studio . Appuyez ensuite sur F5 et démarrez le débogage Solution Une instance de Visual Studio. Maintenant, les deux instances de Visual Studio seront en mode débogage . Commencez avec la solution A maintenant et vous devriez pouvoir déboguer dans la solution B comme si les deux projets étaient dans la même solution.

La clé ici est "Utiliser IIS express" pour l'un et "Serveur Web local IIS" pour l'autre projet. Cela vous permettra d'avoir deux débogueurs en même temps. 

1
Pradeep Reddy

Assurez-vous que les fichiers .dll et .pdb sont dans le bac. Vous pourrez déboguer vers l’autre solution ouverte dans l’autre Visual Studio.

Nous avons généralement un dossier (ex. Dépendances) à partir duquel les dll sont référencées. Placez la DLL dans ce dossier. Les Dll sont poussées dans ce dossier lorsque nous construisons le projet référencé (à l'aide d'événements Build, il existe aussi d'autres moyens).

0
Anthony Nadar