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

Vous pouvez attacher le débogueur Visual Studio à un processus en cours d’exécution sur un ordinateur local ou distant. Une fois le processus en cours d’exécution, sélectionnez Déboguer>Attacher au processus, ou appuyez sur Ctrl+Alt+p dans Visual Studio, puis utilisez la boîte de dialogue Attacher au processus pour attacher le débogueur au processus.

Vous pouvez utiliser Attacher au processus pour déboguer des applications en cours d’exécution sur des ordinateurs locaux ou distants, déboguer plusieurs processus simultanément, déboguer des applications qui n’ont pas été créées dans Visual Studio ou déboguer une application que vous n’avez pas démarrée à partir de Visual Studio avec le débogueur attaché. Par exemple, si vous exécutez une application sans le débogueur et que vous rencontrez une exception, vous pouvez attacher le débogueur au processus qui exécute l’application et commencer le débogage.

Conseil

Vous ne savez pas s’il faut utiliser Attacher au processus dans votre scénario de débogage ? Consultez Scénarios de débogage courants.

Attacher à un processus en cours d’exécution sur votre machine locale

Pour rattacher rapidement le débogueur à un processus auquel vous l’avez attaché précédemment, consultez Rattacher à un processus.

Pour attacher à un processus sur votre ordinateur local :

  1. Dans Visual Studio, sélectionnez Déboguer>Attacher au processus (ou appuyez sur Ctrl+Alt+P) pour ouvrir la boîte de dialogue Attacher au processus.

  2. Vérifiez le Type de connexion.

    Dans la plupart des scénarios, vous pouvez utiliser la valeur par défaut. Certains scénarios peuvent nécessiter un type de connexion différent. Pour plus d’informations, consultez les autres sections de cet article ou Scénarios de débogage courants.

  3. Définissez la Cible de connexion sur le nom de votre machine locale.

    Capture d’écran de la boîte de dialogue Attacher au processus, avec la cible de connexion définie sur le nom de la machine locale.

    Capture d’écran de la boîte de dialogue Attacher au processus, avec la cible de connexion définie sur le nom de la machine locale.

  4. Dans la liste Processus disponibles, recherchez et sélectionnez le ou les processus auxquels attacher le débogueur.

    • Pour sélectionner rapidement un processus, tapez son nom ou sa première lettre dans la zone Filtrer les processus.

    • Si vous ne connaissez pas le nom du processus, parcourez la liste ou consultez Scénarios de débogage courants pour voir les noms de certains processus courants.

    Conseil

    Les processus peuvent démarrer et s’arrêter en arrière-plan pendant que la boîte de dialogue Attacher au processus est ouverte, la liste des processus en cours d’exécution n’est donc pas toujours à jour. Vous pouvez sélectionner Actualiser à tout moment pour voir la liste actuelle.

  5. Dans le champ Attacher à, vérifiez que le type de code à déboguer est listé. Le paramètre Automatique par défaut fonctionne pour la plupart des types d’application.

    Si vous utilisez le type de connexion par défaut, vous pouvez sélectionner manuellement le type de code auquel vous souhaitez attacher le débogueur. Sinon, l’option Sélectionner pourrait être désactivée.

    Pour sélectionner des types de code manuellement :

    1. Cliquez sur Sélectionner.
    2. Dans la boîte de dialogue Sélectionner le type de code, sélectionnez Déboguer ces types de code. Si un échec se produit quand vous essayez d’attacher le débogueur à un processus de la liste, vous pouvez utiliser la boîte de dialogue Sélectionner un type de code pour résoudre le problème.
    3. Sélectionnez les types de code que vous souhaitez déboguer.
    4. Sélectionnez OK.
  6. Sélectionnez Attacher.

Conseil

Dans le scénario où vous avez plusieurs processus identiques, utilisez la colonne Ligne de commande ou les détails du processus w3wp de la colonne Titre pour identifier le processus approprié.

Notes

Vous pouvez attacher un débogueur à plusieurs applications pour le débogage, mais une seule est active dans le débogueur à la fois. Vous pouvez définir l’application active dans la barre d’outils Emplacement de débogage ou la fenêtre Processus de Visual Studio.

Attacher à un processus sur un ordinateur distant

Vous pouvez aussi sélectionner un ordinateur distant dans la boîte de dialogue Attacher au processus, voir une liste des processus disponibles exécutés sur cet ordinateur et attacher le débogueur à un ou plusieurs des processus pour le débogage. Le débogueur distant (msvsmon.exe) doit s’exécuter sur l’ordinateur distant. Pour plus d’informations, consultez Débogage à distance.

Pour obtenir des instructions plus complètes sur le débogage des applications ASP.NET qui ont été déployées sur IIS, consultez Débogage à distance d’ASP.NET sur un ordinateur IIS distant.

Pour attacher à un processus en cours d’exécution sur un ordinateur distant :

  1. Dans Visual Studio, sélectionnez Déboguer>Attacher au processus (ou appuyez sur Ctrl+Alt+P) pour ouvrir la boîte de dialogue Attacher au processus.

  2. Vérifiez le Type de connexion.

    Dans la plupart des scénarios, vous pouvez utiliser la valeur par défaut. Certains scénarios, comme le débogage d’une application Linux ou conteneurisée, nécessitent un type de connexion différent. Pour plus d’informations, consultez les autres sections de cet article ou Scénarios de débogage courants.

  3. Dans la zone Cible de connexion, sélectionnez l’ordinateur distant en utilisant une des méthodes suivantes :

    • Sélectionnez la flèche de déroulement à côté de Cible de connexion, puis sélectionnez le nom de l’ordinateur dans la liste déroulante.

    • Tapez le nom de l’ordinateur dans la zone Cible de connexion, puis appuyez sur Entrée.

      Vérifiez que Visual Studio ajoute le port nécessaire au nom de l’ordinateur, qui s’affiche au format : <nom de l’ordinateur distant>:port

      Notes

      Si vous ne pouvez pas vous connecter avec le nom de l’ordinateur distant, essayez d’utiliser l’adresse IP et l’adresse de port (par exemple, 123.45.678.9:4022). 4026 est le port par défaut du débogueur distant Visual Studio 2022. Pour d’autres attributions de port de débogueur distant, consultez Attributions de port de débogueur distant.

      Notes

      Si vous ne pouvez pas vous connecter avec le nom de l’ordinateur distant, essayez d’utiliser l’adresse IP et l’adresse de port (par exemple, 123.45.678.9:4022). 4024 est le port par défaut du débogueur distant Visual Studio 2019. Pour d’autres attributions de port de débogueur distant, consultez Attributions de port de débogueur distant.

    • Sélectionnez le bouton Rechercher à côté de la zone Cible de connexion pour ouvrir la boîte de dialogue Connexions à distance. La boîte de dialogue Connexions à distance liste tous les appareils qui se trouvent dans votre sous-réseau local ou qui sont directement attachés à votre ordinateur. Vous devez peut-être ouvrir le port UDP 3702 sur le serveur pour découvrir les appareils distants. Sélectionnez l’ordinateur ou l’appareil souhaité, puis cliquez sur Sélectionner.

    Notes

    Le paramètre Type de connexion persiste entre les sessions de débogage. Le paramètre Cible de connexion persiste entre les sessions de débogage uniquement si une connexion de débogage réussie est établie avec cette cible.

  4. Cliquez sur Actualiser pour remplir la liste Processus disponibles.

    Conseil

    Les processus peuvent démarrer et s’arrêter en arrière-plan pendant que la boîte de dialogue Attacher au processus est ouverte, la liste des processus en cours d’exécution n’est donc pas toujours à jour. Vous pouvez sélectionner Actualiser à tout moment pour voir la liste actuelle.

  5. Dans la liste Processus disponibles, recherchez et sélectionnez le ou les processus auxquels attacher le débogueur.

  6. Dans le champ Attacher à, vérifiez que le type de code à déboguer est listé. Le paramètre Automatique par défaut fonctionne pour la plupart des types d’application.

    Si vous utilisez le type de connexion par défaut, vous pouvez sélectionner manuellement le type de code auquel vous souhaitez attacher le débogueur. Sinon, l’option Sélectionner pourrait être désactivée.

    Pour sélectionner des types de code manuellement :

    1. Cliquez sur Sélectionner.
    2. Dans la boîte de dialogue Sélectionner le type de code, sélectionnez Déboguer ces types de code. Si un échec se produit quand vous essayez d’attacher le débogueur à un processus de la liste, vous pouvez utiliser la boîte de dialogue Sélectionner un type de code pour résoudre le problème.
    3. Sélectionnez OK.
  7. Sélectionnez Attacher.

Notes

Vous pouvez attacher un débogueur à plusieurs applications pour le débogage, mais une seule est active dans le débogueur à la fois. Vous pouvez définir l’application active dans la barre d’outils Emplacement de débogage ou la fenêtre Processus de Visual Studio.

Dans certains cas, quand vous déboguez dans une session Bureau à distance (services Terminal Server), la liste Processus disponibles n’affiche pas tous les processus disponibles. 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. La session 0 est utilisée pour les services et 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 serveur au lieu d’une session de services Terminal Server.

Si aucune de ces solutions 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 avec tlist.exe. Pour obtenir tlist.exe, téléchargez et installez les outils de débogage pour Windows, qui sont disponibles dans Téléchargements WDK et WinDbg.

Attacher à un processus .NET Core s’exécutant sur Azure App Service (Windows)

Si vous publiez sur Azure App Service (Windows), consultez Déboguer à distance ASP.NET Core sur Azure ou Déboguer Azure App Services pour obtenir des instructions.

Attacher à un processus .NET Core s’exécutant sur Azure App Service (Windows)

Si vous publiez sur Azure App Service (Windows), l’option Attacher le débogueur se trouve sous le menu ..., sous Hébergement dans le profil de publication. Visual Studio tente d’attacher le débogueur distant à l’instance d’Azure App Service (Windows) sur laquelle publie le profil.

Capture d’écran de l’option Attacher le débogueur dans la page récapitulative Publier.

Attacher à un processus .NET Core exécuté sur Linux en utilisant SSH

Pour plus d’informations, consultez Déboguer à distance .NET Core exécuté sur Linux en utilisant SSH.

Attacher à un processus exécuté sur un conteneur Docker

À partir de Visual Studio 2019, vous pouvez attacher le débogueur Visual Studio à un processus s’exécutant sur un conteneur Docker. Pour un conteneur Docker Linux .NET Core, consultez Attacher à un processus exécuté sur un conteneur Docker Linux. Pour un conteneur Docker Windows, consultez Attacher à un processus exécuté sur un conteneur Docker Windows.

Rattacher à un processus

Vous pouvez rapidement rattacher le débogueur aux processus auxquels vous l’aviez précédemment attaché en choisissant Déboguer>Rattacher au processus (Maj+Alt+P). Quand vous choisissez cette commande, le débogueur essaie immédiatement d’attacher le débogueur aux derniers processus auxquels il était attaché, en essayant d’abord de faire correspondre l’ID de processus précédent et, si cela échoue, en faisant correspondre le nom du processus précédent. Si aucune correspondance n’est trouvée ou si plusieurs processus ont le même nom, la boîte de dialogue Attacher au processus s’ouvre pour vous permettre de sélectionner le processus approprié.

Notes

La commande Rattacher au processus est disponible à partir de Visual Studio 2017.

Scénarios de débogage courants

Pour vous aider à déterminer s’il faut utiliser Attacher au processus et à quel processus attacher le débogueur, le tableau suivant montre quelques scénarios de débogage courants, avec des liens vers plus d’instructions, le cas échéant. (La liste n’est pas exhaustive.)

Pour certains types d’application, comme les applications de plateforme Windows universelle (UWP), vous n’attachez pas directement le débogueur à un nom de processus, mais vous utilisez l’option de menu Déboguer le package d’application installé dans Visual Studio (voir le tableau).

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 .

Pour le débogage de script côté client, le débogage de script doit être activé dans le navigateur. Pour le débogage de script côté client sur Chrome, choisissez JavaScript ou TypeScript comme type de code. En fonction du type d’application, vous devrez fermer toutes les instances de Chrome et démarrer le navigateur en mode débogage (tapez chrome.exe --remote-debugging-port=9222 à partir d’une ligne de commande).

Pour le débogage de script côté client, le débogage de script doit être activé dans le navigateur. Pour le débogage de script côté client sur Chrome, choisissez JavaScript (Chrome) ou JavaScript (Microsoft Edge - Chromium) comme type de code. En fonction du type d’application, vous devez fermer toutes les instances de Chrome et démarrer le navigateur en mode débogage (tapez chrome.exe --remote-debugging-port=9222 à partir d’une ligne de commande). Dans les versions antérieures de Visual Studio, le débogueur de script pour Chrome était Web kit.

Pour sélectionner rapidement un processus en cours d’exécution auquel attacher le débogueur, dans Visual Studio, tapez Ctrl+Alt+P, puis tapez la première lettre du nom du processus.

Scénario Méthode de débogage Nom du processus Remarques et liens
ASP.NET Core - Débogage à distance sur le serveur IIS Utiliser des outils à distance et Attacher au processus w3wp.exe ou dotnet.exe À compter de .NET Core 3, le processus w3wp.exe est utilisé pour le modèle d’hébergement dans l’application par défaut. Pour le déploiement d’applications, consultez Publier sur IIS. Pour plus d’informations, consultez Débogage à distance ASP.NET Core sur un ordinateur IIS distant
ASP.NET Core - Déboguer sur la machine locale après avoir démarré l’application sans le débogueur Utiliser Attacher au processus msedge.exe Cela peut être utile pour accélérer le chargement de votre application, par exemple, pendant le profilage.
ASP.NET 4 ou 4.5 - Débogage à distance sur un serveur IIS Utiliser des outils à distance et Attacher au processus w3wp.exe Consultez Débogage à distance ASP.NET sur un ordinateur IIS distant
Script côté client - Déboguer sur un serveur IIS local, pour les types d’application pris en charge Utiliser Attacher au processus chrome.exe ou msedge.exe Le débogage de script doit être activé. Pour Chrome, vous devez également exécuter Chrome en mode débogage (tapez chrome.exe --remote-debugging-port=9222 à partir d’une ligne de commande) et sélectionnez JavaScript ou TypeScript dans le champ Attacher à.
Application C#, Visual Basic ou C++ - Déboguer sur la machine locale Utiliser le débogage standard (F5) ou Attacher au processus <appname>.exe Dans la plupart des scénarios, utilisez le débogage standard et non Attacher au processus.
Application de bureau Windows - Débogage à distance outils de contrôle à distance. N/A Consultez Déboguer à distance une application C# ou Visual Basic ou Déboguer à distance une application C++
.NET Core sur Linux - Déboguer Utiliser Attacher au processus dotnet.exe ou un nom de processus unique Pour utiliser SSH, consultez Déboguer à distance .NET Core exécuté sur Linux en utilisant SSH. Pour les applications conteneurisées, consultez Attacher à un processus exécuté dans un conteneur Docker.
Application conteneurisée - Déboguer Utiliser Attacher au processus dotnet.exe ou un nom de processus unique Consultez Attacher à un processus exécuté dans un conteneur Docker
Python sur Linux - Débogage à distance Utiliser Attacher au processus debugpy Consultez Attacher à distance à partir des outils Python
Autres types d’application pris en charge - Déboguer sur un processus serveur Si le serveur est distant, utilisez les outils à distance et Attacher au processus chrome.exe, msedge.exe ou d’autres processus Si nécessaire, utilisez le moniteur de ressource pour identifier le processus. Consultez Débogage à distance.
Application Windows universelle (UWP), OneCore, HoloLens ou application IoT - Débogage à distance Déboguer un package d’application installé N/A Consultez Déboguer un package d’application installé au lieu d’utiliser Attacher au processus
Application Windows universelle (UWP), OneCore, HoloLens ou IoT - Déboguer une application que vous n’avez pas démarrée à partir de Visual Studio Déboguer un package d’application installé N/A Consultez Déboguer un package d’application installé au lieu d’utiliser Attacher au processus

Utiliser les fonctionnalités du débogueur

Pour utiliser toutes les fonctionnalités du débogueur Visual Studio (par exemple, atteindre des points d’arrêt) quand vous l’attachez à un processus, l’application doit correspondre exactement à votre source et à vos symboles locaux. Autrement dit, le débogueur doit pouvoir charger les fichiers de symboles (.pdb) appropriés. Par défaut, cela nécessite une build de débogage.

Pour les scénarios de débogage à distance, vous devez avoir le code source (ou une copie du code source) déjà ouvert dans Visual Studio. Les fichiers binaires d’application compilés sur la machine distante doivent provenir de la même build que ceux de la machine locale.

Dans certains scénarios de débogage local, vous pouvez déboguer dans Visual Studio sans accès à la source si les fichiers de symboles appropriés sont présents avec l’application. Par défaut, cela nécessite une build de débogage. Pour plus d’informations, consultez Spécifier les fichiers de symboles et les fichiers sources.

Résoudre les erreurs d’attachement

Dans certains scénarios, le débogueur peut avoir besoin d’aide pour identifier correctement le type de code à déboguer. Si les valeurs de connexion sont correctement définies (vous pouvez voir le processus approprié dans la liste Processus disponibles), mais que le débogueur ne parvient pas à s’attacher, essayez de sélectionner le type de connexion le plus approprié dans la liste Type de connexion, ce qui est nécessaire, par exemple, si vous déboguez une application Linux ou Python. Si vous utilisez le type de connexion par défaut, vous pouvez également sélectionner le type de code spécifique auquel vous connecter, comme décrit plus loin dans cette section.

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 .

Parfois, le débogueur peut réussir à s’attacher à un type de code, mais pas aux autres. En règle générale, cela se produit quand :

  • Vous essayez d’attacher le débogueur à un processus exécuté sur un ordinateur distant. Il est possible que des composants de débogage distant soient installés pour certains types de code, mais pas pour d’autres, sur l’ordinateur distant.
  • Vous essayez 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, vous voyez un message avec 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. Le code non attaché continue de s’exécuter dans le processus, mais vous ne pouvez pas définir de points d’arrêt, voir les données ni effectuer d’autres opérations de débogage sur ce code.

Si vous souhaitez des informations plus spécifiques sur les raisons pour lesquelles le débogueur n’a pas pu s’attacher à un type de code, essayez de rattacher le débogueur à ce type de code uniquement.

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éboguer, cliquez sur tout détacher.

  2. Rattachez le débogueur au processus, en sélectionnant uniquement le type de code auquel il n’a pas pu être attaché.

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

    2. Sélectionnez 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. Désélectionnez les autres types de code.

    4. Sélectionnez OK.

    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.