Attacher aux processus en cours d'exécution avec le débogueur Visual Studio

Cette rubrique montre comment s’attacher à un processus en cours d’exécution, comment s’attacher à un processus sur un ordinateur distant et comment résoudre des erreurs d’attachement.

Pourquoi déboguer des processus attachés ?

Le débogueur Visual Studio peut être attaché à un processus qui s’exécute en dehors de Visual Studio.Utilisez cette possibilité pour accomplir les opérations suivantes :

  • Déboguer une application qui n’a pas été créée dans Visual Studio.

  • Déboguer plusieurs processus simultanément.Vous pouvez également déboguer plusieurs processus en démarrant plusieurs projets dans une seule solution.

  • Déboguer un processus s'exécutant sur un ordinateur distant.

  • Déboguez une DLL qui s'exécute dans un processus séparé qui ne peut pas être démarré facilement à partir de Visual Studio, par exemple, un service ou une DLL ISAPI s'exécutant avec les Services IIS.

  • Démarrez automatiquement le débogueur lorsqu'un processus tombe en panne dans le cadre d'une exécution en dehors de Visual Studio.C'est ce que l'on appelle le débogage juste-à-temps.

Une fois attaché à un programme, vous pouvez utiliser les commandes d'exécution du débogueur, examiner l'état du programme, etc.Pour plus d'informations, consultez Déboguer un ou plusieurs processus dans Visual Studio, Démarrer, Pas à pas principal, Exécuter du code et Arrêter le débogage dans Visual Studio et Affichage des données dans le débogueur.Les possibilités d'inspection peuvent dépendre de la présence d'informations de débogage dans le programme, de vos droits d'accès au code source de ce dernier et du suivi des informations de débogage par le compilateur JIT Common Language Runtime.

Remarque pour C++Remarque pour C++

Pour que le débogueur s'attache au code écrit en C++, le code doit émettre DebuggableAttribute.Vous pouvez ajouter cela automatiquement à votre code grâce à la liaison, à l'aide de l'option /ASSEMBLYDEBUG.

Mise en gardeAttention

Pour attacher une application Windows Store écrite en JavaScript, vous devez d'abord activer le débogage de l'application.Voir Attach the debugger dans le Centre de développement Windows.

Attacher à un processus en cours d'exécution

  1. Dans le menu Débogage, sélectionnez Attacher au processus.

  2. Dans la boîte de dialogue Attacher au processus, recherchez le programme que vous voulez attacher dans la liste Processus disponibles.

    1. Si le programme que vous voulez déboguer s'exécute sur un autre ordinateur, utilisez la zone de liste Qualificateur pour sélectionner ou spécifier l'ordinateur distant.Pour plus d'informations, consultez Débogage et diagnostics distants.

    2. Si le processus s'exécute sous un compte d'utilisateur différent, activez la case à cocher Afficher les processus de tous les utilisateurs.

    3. Si vous êtes connecté via une Connexion Bureau à distance, activez la case à cocher Afficher les processus de toutes les sessions.

  3. Dans la zone Attacher à, vérifiez que le type de code à déboguer est répertorié.Le paramètre par défaut Automatique tente de déterminer le type de code que vous souhaitez déboguer.Si le paramètre automatique n'est pas approprié :

    1. Cliquez sur Sélectionner.

    2. Dans la boîte de dialogue Sélectionner le type de code, cliquez sur Déboguer ces types de codes et sélectionnez les types à déboguer.

    3. Cliquez sur OK.

  4. Cliquez sur Attacher.

    La liste Processus disponibles s'affiche automatiquement lorsque vous ouvrez la boîte de dialogue Processus.Les processus peuvent démarrer et s'interrompre en arrière-plan pendant que la boîte de dialogue est ouverte.Toutefois, le contenu n'est pas toujours actualisé.Pour visualiser la liste des processus en cours d'exécution, cliquez sur Actualiser.

    Vous pouvez attacher un débogueur à plusieurs programmes à la fois, mais seul l'un d'entre eux est actif dans le débogueur à un moment donné.Vous pouvez définir le programme actif dans la barre d'outils Emplacement de débogage ou la fenêtre Processus.

    [!REMARQUE]

    Pour que le débogueur s'attache au code managé écrit en C++/CLI, le code doit émettre DebuggableAttribute.Vous pouvez ajouter cela automatiquement à votre code grâce à la liaison, à l'aide de l'option /ASSEMBLYDEBUG.

    Si vous essayez d'établir un attachement à un processus appartenant à un compte d'utilisateur non fiable, une boîte de dialogue d'avertissement de sécurité s'affiche avec un message de confirmation.Pour plus d'informations, consultez Avertissement de sécurité : L'attachement à un processus appartenant à un utilisateur non fiable peut être dangereux. Si les informations suivantes semblent suspectes ou en cas de doutes, n'attachez pas ce processus..

    Dans certains cas, lors du débogage dans une session Bureau à distance (Terminal Services), la liste Processus disponibles n'affiche pas tous les processus disponibles.Dans Windows Server 2003 ou versions ultérieures, si vous exécutez Visual Studio avec un compte d’utilisateur limité, la liste Processus disponibles n’affiche pas les processus qui s’exécutent dans la session 0, qui est utilisée pour les services et les autres processus serveur, y compris w3wp.exe.Vous pouvez résoudre le problème en exécutant Visual Studio sous un compte administrateur ou à partir de la console du serveur au lieu d’une session Terminal Server.Si aucune de ces solutions de contournement n'est possible, la troisième option consiste à attacher le débogueur au processus en exécutant vsjitdebugger.exe -p ProcessId à partir de la ligne de commande Windows.Vous pouvez déterminer l'ID de processus à l'aide de tlist.exe.Pour obtenir tlist.exe, téléchargez et installez les outils de débogage pour Windows, qui sont disponibles à l’adresse https://go.microsoft.com/fwlink/?LinkId=168279.

Pour arrêter le débogage du processus attaché, cliquez sur Déboguer/Arrêter le débogage, ou arrêtez l’exécution du processus attaché.

Attacher à un processus sur un ordinateur distant

Lorsque vous utilisez la boîte de dialogue Attacher au processus, vous pouvez sélectionner un autre ordinateur configuré pour le débogage distant.Pour plus d'informations, consultez Configurer les outils de contrôle à distance sur le périphérique.Après avoir sélectionné un ordinateur distant, vous pouvez consulter une liste des processus disponibles exécutés sur cet ordinateur et attacher le débogueur à un ou plusieurs d'entre eux pour déboguer.

Pour sélectionner un ordinateur distant :

  1. Dans la boîte de dialogue Attacher au processus, sélectionnez le type de connexion approprié dans la liste Transport.Généralement, ce paramètre a la valeur Défaut.

  2. La zone de liste Qualificateur vous permet de sélectionner le nom d'ordinateur distant à l'aide d'une des méthodes suivantes :

    1. Tapez le nom dans la zone de liste Qualificateur.

    2. Cliquez sur la flèche de déroulement associée à la zone de liste Qualificateur, puis sélectionnez le nom de l'ordinateur dans la liste déroulante.

    3. Cliquez sur le bouton Rechercher en regard de la liste Qualificateur pour ouvrir la boîte de dialogue Sélectionner une connexion du débogueur distant.La boîte de dialogue Sélectionner une connexion du débogueur distant répertorie tous les périphériques qui se trouvent dans votre sous-réseau local, et les éventuels périphériques directement connectés à votre ordinateur via un câble Ethernet.Cliquez sur l'ordinateur ou le périphérique souhaité, puis cliquez sur Sélectionner.

    Le paramètre Transport persiste entre des sessions de débogage.Le paramètre Qualificateur persiste entre des sessions de débogage uniquement si une connexion de débogage réussie est établie avec ce qualificateur.

Résoudre les erreurs d'attachement

Quand le débogueur est attaché à un processus en cours d’exécution, le processus peut contenir un ou plusieurs types de code.Les types de code auxquels le débogueur peut s'attacher sont affichés et sélectionnés dans la boîte de dialogue Sélectionner le type de code.

[!REMARQUE]

Pour que le débogueur s'attache au code managé écrit en C++, le code doit émettre DebuggableAttribute.Vous pouvez ajouter cela automatiquement à votre code grâce à la liaison, à l'aide de l'option /ASSEMBLYDEBUG.

Mise en gardeAttention

Pour attacher une application Windows Store écrite en JavaScript, vous devez d'abord activer le débogage de l'application.Voir Attach the debugger dans le Centre de développement Windows.

Parfois, le débogueur peut réussir à s'attacher à un type de code, mais pas aux autres.Cela peut se produire si vous tentez d'attacher le débogueur à un processus exécuté sur un ordinateur distant.Il est possible que l'ordinateur distant possède des composants de débogage distant installés pour certains types de code, mais pas pour d'autres.Cela peut également se produire si vous tentez d'attacher le débogueur à plusieurs processus pour déboguer directement la base de données.Le débogage SQL prend en charge l'attachement à un seul processus uniquement.

Si le débogueur peut être attaché à certains des types de code, mais pas à tous, un message identifie les types auxquels il n'a pas pu être attaché.

Si le débogueur parvient à s'attacher à au moins un type de code, vous pouvez procéder au débogage du processus.Vous pouvez uniquement déboguer les types de code attachés avec succès.L'exemple de message précédent indique que le code de type script n' a pas réussi à s'attacher.Il vous sera donc impossible de déboguer le code de script se trouvant dans le processus.Le code de script continuera de s'exécuter dans le processus, mais vous ne pourrez pas définir des points d'arrêt, afficher des données ni réaliser d'autres opérations de débogage dans le script.

Si vous souhaitez des informations plus spécifiques sur l'incapacité du débogueur à s'attacher à un type de code, vous pouvez tenter d'attacher à nouveau le débogueur uniquement à ce type de code.

Pour connaître les raisons de l'échec de l'attachement d'un type de code

  1. Procédez au détachement du processus.Dans le menu Débogage, cliquez sur Détacher tout.

  2. Réattachez le processus en sélectionnant un seul type de code.

    1. Dans la boîte de dialogue Attacher au processus, sélectionnez le processus dans la liste Processus disponibles.

    2. Cliquez sur Sélectionner.

    3. Dans la boîte de dialogue Sélectionner le type de code, sélectionnez Déboguer ces types de codes et le type de code qui a échoué lors de l'attachement.Effacez tout autre code.

    4. Cliquez sur OK.La boîte de dialogue Sélectionner le type de code se ferme.

    5. Dans la boîte de dialogue Attacher au processus, cliquez sur Attacher.

    Cette fois-ci, l'attachement échoue entièrement et un message d'erreur spécifique s'affiche.

Voir aussi

Concepts

Déboguer un ou plusieurs processus dans Visual Studio

Débogage just-in-time dans Visual Studio

Autres ressources

Débogage et diagnostics distants