Pour attacher VS Code à un processus déjà en cours d'exécution sur votre Mac, utilisez le débogueur prenant en charge le langage de ce processus : pour Node.js, choisissez Attach to Node Process dans la palette de commandes ; pour C#, choisissez Debug: Attach to a .NET 5+ or .NET Core process ; pour C/C++, créez une configuration d'attachement à l'aide de LLDB ou GDB. Ces méthodes sont propres au runtime ou à l'extension. Il n'existe pas de commande VS Code unique permettant de s'attacher à tous les types de processus.

Avant de vous attacher : identifiez le processus et le débogueur

Identifiez d'abord l'environnement d'exécution du processus : Node.js, .NET, C/C++ natif ou un autre runtime. Le débogueur Node intégré de VS Code et ses extensions de langage offrent des fonctionnalités d'attachement différentes ; la présence d'un processus dans le Moniteur d'activité de macOS ne garantit pas que n'importe quel débogueur puisse s'y attacher. Vous avez également besoin de l'extension correspondant au langage. Pour le C/C++ natif sur macOS, Microsoft documente la prise en charge de LLDB ou GDB via l'extension C/C++. VS Code: Debug C++

Ouvrez le projet ou les fichiers sources correspondant au programme en cours d'exécution. L'attachement connecte le débogueur à un processus ; il ne démarre pas l'application, ne la recompile pas et ne garantit pas la liaison des points d'arrêt. La concordance du code source et la disponibilité des symboles de débogage sont primordiales, en particulier pour les programmes natifs et les builds optimisées.

S'attacher à un processus Node.js en cours d'exécution

Dans VS Code, appuyez sur ⇧⌘P pour ouvrir la palette de commandes, exécutez Debug: Attach to Node Process et sélectionnez le processus souhaité dans la liste Quick Pick. La liste affiche les processus candidats avec leurs identifiants de processus (PID) et leurs ports de débogage. VS Code documente cette méthode pour les processus Node qui n'ont pas été démarrés en mode débogage, ainsi que pour ceux utilisant une option inspect. VS Code: Node.js debugging

Si le processus n'apparaît pas dans la liste, ou si vous souhaitez une configuration reproductible, ouvrez ou créez .vscode/launch.json et ajoutez une configuration d'attachement. Pour un processus déjà en cours d'exécution sans mode débogage, utilisez la variable de sélection d'ID de processus :

{
  "name": "Attach to Node process",
  "type": "node",
  "request": "attach",
  "processId": "${command:PickProcess}"
}

Sélectionnez cette configuration dans Exécuter et déboguer, puis lancez le débogage avec F5. Pour un processus Node déjà démarré avec --inspect, utilisez plutôt une configuration d'attachement indiquant son port de débogage ; la valeur par défaut de Node est 9229. Ne combinez pas processId et port : VS Code détermine automatiquement le port lors d'un attachement par ID de processus. Node.js debugging configuration details

S'attacher à un processus .NET en cours d'exécution

Installez l'extension C# de Microsoft et ouvrez la palette de commandes avec ⇧⌘P. Exécutez Debug: Attach to a .NET 5+ or .NET Core process, puis sélectionnez le processus cible dans la liste. Il s'agit de la procédure documentée pour attacher un processus C# dans VS Code ; utilisez-la au lieu de supposer que le sélecteur de processus ou les champs de configuration de Node s'appliquent à .NET. VS Code: C# debugging

Une fois l'attachement effectué, définissez un point d'arrêt dans le code source correspondant et laissez l'application atteindre ce code. Si le point d'arrêt ne se lie pas, vérifiez que le processus exécute bien le build correspondant à la source ouverte et que des symboles exploitables sont disponibles. Les paramètres de source exacte et les options de symboles du débogueur C# peuvent influencer le débogage, et l'attachement ne peut pas modifier rétroactivement la manière dont les modules déjà chargés ont été compilés. C# debugger settings

S'attacher à un processus C ou C++ natif

Installez l'extension C/C++ de Microsoft et utilisez une configuration d'attachement dans .vscode/launch.json. La configuration requiert le chemin de l'exécutable pour que le débogueur puisse charger les symboles, une requête d'attachement et un identifiant de processus. La documentation de référence de configuration C/C++ indique ${command:pickProcess} comme sélecteur de processus par défaut et LLDB comme débogueur disponible sur macOS. C/C++ launch configuration reference

Voici la structure d'une configuration minimale pour macOS :

{
  "name": "Attach to native process",
  "type": "cppdbg",
  "request": "attach",
  "program": "${workspaceFolder}/path/to/executable",
  "processId": "${command:pickProcess}",
  "MIMode": "lldb"
}

Remplacez path/to/executable par l'exécutable réel utilisé par le processus en cours d'exécution. Laissez MIMode défini sur lldb pour cet exemple avec LLDB ; GDB nécessite une configuration distincte sur macOS. Le débogueur a besoin de l'emplacement de l'exécutable pour charger les symboles ; par conséquent, un chemin approximatif ou sans rapport peut rendre le débogage au niveau des sources inutilisable. C/C++ configuration reference

Si l'attachement échoue ou si les points d'arrêt ne sont pas atteints

Vérifiez que vous avez sélectionné le bon processus, que l'extension appropriée est installée et que le processus et le débogueur ont des architectures compatibles. Sur les puces Apple Silicon, les discordances d'architecture sont expressément documentées comme une cause possible d'erreurs d'attachement C#. Pour C/C++, confirmez que le chemin de l'exécutable et les symboles disponibles correspondent au build en cours d'exécution. Si le processus appartient à un autre utilisateur ou est protégé par macOS, les autorisations du système d'exploitation peuvent également empêcher l'attachement ; utilisez un processus autorisé et respectez la politique de sécurité applicable de macOS au lieu d'essayer de la contourner.

Pour Node.js, utilisez le sélecteur de processus propre au langage ou configurez le port inspect ; une configuration générique d'attachement C/C++ ne convient pas. Pour C#, utilisez la commande d'attachement .NET. Pour le C/C++ natif, utilisez cppdbg avec LLDB ou une installation de GDB configurée séparément. Ces distinctions permettent d'orienter l'étape suivante lorsqu'une instruction d'attachement générique ne s'applique pas à la cible.

Une fois terminé, utilisez Debug: Stop pour vous déconnecter. En mode attachement Node.js, VS Code précise que l'arrêt déconnecte le débogueur et que la cible continue de s'exécuter. Confirmez le comportement de votre extension pour d'autres environnements d'exécution s'il est important de maintenir le processus en vie ; les sessions d'attachement et de lancement n'ont pas nécessairement un comportement d'arrêt identique. VS Code: Node.js debugging

Sources