Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Visual Studio peut déboguer une solution qui a plusieurs processus. Vous pouvez démarrer et basculer entre les processus, interrompre, continuer et parcourir la source, arrêter le débogage et arrêter ou détacher des processus individuels.
Commencer le débogage avec plusieurs processus
Lorsque plusieurs projets d’une solution Visual Studio peuvent s’exécuter indépendamment, vous pouvez sélectionner le projet que démarre le débogueur. Le projet en cours de démarrage apparaît en gras dans l’Explorateur de solutions.
Pour modifier le projet de démarrage, dans l’Explorateur de solutions, cliquez avec le bouton droit sur un autre projet, puis sélectionnez Définir comme projet de démarrage.
Pour démarrer le débogage d’un projet à partir de l’Explorateur de solutions sans le rendre le projet de démarrage, cliquez avec le bouton droit sur le projet, puis sélectionnez Déboguer>Nouvelle instance ou Entrer dans une nouvelle instance.
Pour définir le projet de démarrage ou plusieurs projets à partir des propriétés de la solution :
Sélectionnez la solution dans l’Explorateur de solutions, puis sélectionnez l’icône Propriétés dans la barre d’outils, ou cliquez avec le bouton droit sur la solution, puis sélectionnez Propriétés.
Dans la page Propriétés, sélectionnez Propriétés communes>Projet de démarrage.
Sélectionnez Sélection actuelle, projet de démarrage unique et fichier projet ou plusieurs projets de démarrage.
Si vous sélectionnez Plusieurs projets de démarrage, vous pouvez modifier l’ordre de démarrage et l’action à entreprendre pour chaque projet : Démarrer, Démarrer sans débogage ou Aucun.
Sélectionnez Appliquer ou OK pour appliquer et fermer la boîte de dialogue.
Se connecter à un processus
Le débogueur peut également s’attacher aux applications s’exécutant dans des processus en dehors de Visual Studio, notamment sur des appareils distants. Après vous être connecté à une application, vous pouvez utiliser le débogueur Visual Studio. Les fonctionnalités de débogage peuvent être limitées. Cela dépend de la création de l’application avec des informations de débogage, si vous avez accès au code source de l’application et si le compilateur JIT effectue le suivi des informations de débogage.
Pour plus d’informations, consultez S'attacher aux processus en cours.
Pour joindre un processus en cours d’exécution :
Une fois l’application en cours d’exécution, sélectionnez Déboguer>attacher au processus.
Dans la boîte de dialogue Attacher au processus , sélectionnez le processus dans la liste Processus disponibles , puis sélectionnez Attacher.
Note
Le débogueur ne s’attache pas automatiquement à un processus enfant démarré par un processus débogué, même si le projet enfant se trouve dans la même solution. Pour déboguer un processus enfant, joignez-vous au processus enfant après son démarrage, ou configurez l’Éditeur du Registre Windows pour démarrer le processus enfant dans une nouvelle instance de débogueur.
Utiliser l’Éditeur du Registre pour démarrer automatiquement un processus dans le débogueur
Parfois, vous devrez peut-être déboguer le code de démarrage d’une application lancée par un autre processus. Les exemples incluent des services et des actions de configuration personnalisées. Vous pouvez lancer le débogueur et l’attacher automatiquement à l’application.
Démarrez l’Éditeur du Registre Windows en exécutantregedit.exe.
Dans l’Éditeur du Registre, accédez à HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Image File Execution Options.
Sélectionnez le dossier de l’application à démarrer dans le débogueur.
Si l’application n’est pas répertoriée en tant que dossier enfant, cliquez avec le bouton droit sur Options d’exécution du fichier image, sélectionnez Nouvelle>clé et tapez le nom de l’application. Vous pouvez également cliquer avec le bouton droit sur la nouvelle clé dans l’arborescence, sélectionner Renommer, puis entrer le nom de l’application.
Cliquez avec le bouton droit sur la nouvelle clé dans l’arborescence, puis sélectionnez Nouvelle>valeur de chaîne.
Remplacez le nom de la nouvelle valeur par nouvelle valeur #1 par
debugger.Cliquez avec le bouton droit sur débogueur , puis sélectionnez Modifier.
Dans la boîte de dialogue Modifier la chaîne, tapez
vsjitdebugger.exedans la zone Données de la valeur, puis sélectionnez OK.
Déboguer avec plusieurs processus
Lors du débogage d'une application avec plusieurs processus, les commandes de pause, d'exécution pas à pas et de reprise affectent par défaut tous les processus. Par exemple, lorsqu’un processus est suspendu à un point d’arrêt, l’exécution de tous les autres processus est également suspendue. Vous pouvez modifier ce comportement par défaut pour mieux contrôler les cibles des commandes d’exécution.
Pour déterminer si tous les processus sont suspendus lorsqu’un processus s’interrompt :
- Dans le volet Outils (ou Déboguer) >Options, développez la section Tous les paramètres>Général.
- Dans la boîte de dialogue Outils (ou >), développez la section Débogage>général.
- Activez ou désactivez la case à cocher Arrêter tous les processus lorsqu’un processus s’interrompt.
Commandes Arrêt, Pas, Continuer
Le tableau suivant décrit les comportements des commandes de débogage lorsque la case Arrêter tous les processus lorsqu'un processus s'arrête est cochée ou décochée :
| Commande | Sélectionné | Désélectionné |
|---|---|---|
| Déboguer>Tout interrompre | Tous les processus s’arrêtent. | Tous les processus s’arrêtent. |
| Déboguer>Continuer | Tous les processus reprendnt. | Tous les processus suspendus reprendnt. |
| Déboguer>Plongée dans, Pas par-dessus ou Sortir de | Tous les processus s’exécutent pendant les étapes de processus actuelles. Ensuite, tous les processus s’arrêtent. |
Étapes de processus actuelles. Les processus suspendus reprendnt. Les processus en cours continuent. |
| Déboguer>Entrer dans le processus actuel, Passer au-dessus du processus actuel ou Sortir du processus actuel | N/A | Étapes de processus actuelles. D’autres processus conservent leur état existant (suspendu ou en cours d’exécution). |
| Point d’arrêt de la fenêtre source | Tous les processus s’arrêtent. | Seuls les arrêts de processus de la fenêtre source. |
| Fenêtre source Exécuter au curseur La fenêtre source doit se trouver dans le processus actuel. |
Tous les processus s’exécutent pendant que le processus de la fenêtre source s’exécute jusqu'au curseur, puis s'arrête. Ensuite, tous les autres processus s’arrêtent. |
Le processus de fenêtre source s’exécute sur le curseur. D’autres processus conservent leur état existant (suspendu ou en cours d’exécution). |
| Fenêtre des processus>Interrompre le processus | N/A | Interruptions de processus sélectionnées. D’autres processus conservent leur état existant (suspendu ou en cours d’exécution). |
| Fenêtre des processus>Continuer le processus | N/A | Le processus sélectionné reprend. D’autres processus conservent leur état existant (suspendu ou en cours d’exécution). |
Rechercher les fichiers source et symbole (.pdb)
Pour naviguer dans le code source d’un processus, le débogueur a besoin d’accéder à ses fichiers sources et fichiers de symboles. Pour plus d’informations, consultez Spécifier des fichiers sources et des symboles (.pdb).
Si vous ne pouvez pas accéder aux fichiers d’un processus, vous pouvez naviguer à l’aide de la fenêtre Désassemblement . Pour plus d’informations, consultez Guide pratique pour utiliser la fenêtre Désassemblement.
Basculer entre les processus
Vous pouvez attacher plusieurs processus lorsque vous déboguez, mais un seul processus est actif dans le débogueur à tout moment. Vous pouvez définir le processus actif ou actif dans la barre d’outils Emplacement du débogage , ou dans la fenêtre Processus . Pour basculer entre les processus, les deux processus doivent être en mode arrêt.
Pour définir le processus actuel depuis la barre d’outils Emplacement de débogage :
Pour ouvrir la barre d’outils Emplacement de débogage, sélectionnez Affichage>Barres d'outils>Emplacement de débogage.
Pendant le débogage, dans la barre d’outils Emplacement de débogage , sélectionnez le processus que vous souhaitez définir comme processus actuel dans la liste déroulante Processus .
Pour définir le processus actuel à partir de la fenêtre Processus :
Pour ouvrir la fenêtre Processus, lors du débogage, sélectionnez Déboguer>les processus>.
Dans la fenêtre Processus , le processus actuel est marqué par une flèche jaune. Double-cliquez sur le processus que vous souhaitez définir comme processus actuel.
Le passage à un processus le définit en tant que processus actuel à des fins de débogage. Les fenêtres du débogueur affichent l’état du processus actuel et les commandes pas à pas affectent uniquement le processus actuel.
Arrêtez le débogage impliquant plusieurs processus
Par défaut, lorsque vous sélectionnez Déboguer>arrêter le débogage, le débogueur se termine ou se détache de tous les processus.
Si le processus actuel a été lancé dans le débogueur, le processus est terminé.
Si vous avez attaché le débogueur au processus actuel, le débogueur se détache du processus et quitte le processus en cours d’exécution.
Si vous démarrez le débogage d’un processus à partir d’une solution Visual Studio, joignez-vous à un autre processus déjà en cours d’exécution, puis choisissez Arrêter le débogage, la session de débogage se termine. Le processus démarré dans Visual Studio se termine, tandis que le processus auquel vous êtes attaché continue de s'exécuter.
Pour contrôler la façon dont l’arrêt du débogage affecte un processus individuel, dans la fenêtre Processus , cliquez avec le bouton droit sur un processus, puis activez ou désactivez la case à cocher Détacher lors de l’arrêt du débogage .
Note
L'option du débogueur "Interrompre tous les processus lorsqu'un processus échoue" n'affecte pas l'arrêt, la terminaison ou le détachement des processus.
Arrêter, terminer et détacher des commandes
Le tableau suivant décrit les comportements des commandes d’arrêt, de fin et de détachement du débogueur avec plusieurs processus :
| Commande | Description |
|---|---|
| Déboguer>Arrêter le débogage | Sauf si le comportement est modifié dans la fenêtre Processus , les processus démarrés par le débogueur sont terminés et les processus attachés sont détachés. |
| Déboguer>Terminer Tout | Tous les processus sont terminés. |
| Déboguer>Tout détacher | Le débogueur se détache de tous les processus. |
| fenêtre Processus>Détacher le processus | Le débogueur se détache du processus sélectionné. D’autres processus conservent leur état existant (suspendu ou en cours d’exécution). |
| Fenêtre des processus>Terminer le processus | Le processus sélectionné est terminé. D’autres processus conservent leur état existant (suspendu ou en cours d’exécution). |
| Fenêtre des processus>Détacher lors de l'arrêt du débogage | Si cette option est sélectionnée, Debug>Arrêter le débogage se détache du processus sélectionné. S’il n’est pas sélectionné, Le débogage>arrêter le débogage met fin au processus sélectionné. |