Чтобы подключить VS Code к процессу, уже запущенному на вашем Mac, используйте отладчик, поддерживающий язык этого процесса: для Node.js выберите Attach to Node Process в палитре команд (Command Palette); для C# выберите Debug: Attach to a .NET 5+ or .NET Core process; для C/C++ создайте конфигурацию подключения (attach), используя LLDB или GDB. Эти способы зависят от среды выполнения или расширения. Универсальной команды VS Code, подключающейся к любому типу процессов, не существует.

Перед подключением: определите процесс и отладчик

Сначала определите, на чём работает процесс: Node.js, .NET, нативный C/C++ или другая среда выполнения. Встроенный в VS Code отладчик Node и языковые расширения предоставляют разные функции подключения; тот факт, что процесс отображается в «Мониторинге системы» (Activity Monitor) macOS, не означает, что к нему может подключиться любой отладчик. Вам также понадобится соответствующее расширение для данного языка. Для нативного C/C++ на macOS Microsoft документирует поддержку LLDB или GDB через расширение C/C++. VS Code: Debug C++

Откройте проект или исходные файлы, соответствующие работающей программе. Подключение (attach) связывает отладчик с процессом; оно не запускает приложение, не выполняет повторную сборку и не гарантирует привязку точек останова (breakpoints). Соответствие исходного кода и наличие отладочных символов крайне важны, особенно для нативных программ и оптимизированных сборок.

Подключение к работающему процессу Node.js

В VS Code нажмите ⇧⌘P, чтобы открыть палитру команд, запустите Debug: Attach to Node Process и выберите нужный процесс из списка Quick Pick. В средстве выбора отображаются процессы-кандидаты, их идентификаторы (PID) и порты отладки. VS Code описывает этот способ как для процессов Node, запущенных не в режиме отладки, так и для процессов, использующих параметр inspect. VS Code: Node.js debugging

Если процесса нет в списке или вам нужна конфигурация для многократного использования, откройте или создайте .vscode/launch.json и добавьте конфигурацию подключения. Для процесса, который уже запущен без режима отладки, используйте переменную выбора идентификатора процесса:

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

Выберите эту конфигурацию в разделе Запуск и отладка (Run and Debug), затем начните отладку с помощью F5. Для процесса Node, уже запущенного с флагом --inspect, используйте конфигурацию подключения с указанием порта отладки; по умолчанию в Node используется 9229. Не объединяйте processId и port: VS Code определяет порт автоматически при подключении по идентификатору процесса. Подробные сведения о конфигурации отладки Node.js

Подключение к работающему процессу .NET

Установите расширение Microsoft C# и откройте палитру команд с помощью ⇧⌘P. Запустите команду Debug: Attach to a .NET 5+ or .NET Core process, затем выберите целевой процесс из списка. Это официально задокументированный способ подключения к процессу для C# в VS Code; используйте его вместо предположений о том, что средство выбора процессов Node или поля его конфигурации применимы к .NET. VS Code: C# debugging

После подключения установите точку останова в соответствующем исходном коде и дождитесь, пока приложение дойдет до этого кода. Если точка останова не привязывается (unbound), убедитесь, что процесс выполняет сборку, соответствующую открытому вами исходному коду, и что доступны пригодные для использования символы. Параметр точного соответствия исходного кода (exact-source) и параметры символов в отладчике C# могут влиять на отладку, а само подключение не может задним числом изменить то, как были скомпилированы уже загруженные модули. Параметры отладчика C#

Подключение к нативному процессу C или C++

Установите расширение Microsoft C/C++ и используйте конфигурацию подключения в .vscode/launch.json. Для конфигурации требуются: путь к исполняемому файлу (чтобы отладчик мог загрузить символы), запрос на подключение (attach) и идентификатор процесса. В справочнике по настройке C/C++ указана переменная ${command:pickProcess} как средство выбора процесса по умолчанию и LLDB как доступный отладчик на macOS. Справочник по файлу конфигурации запуска C/C++

Минимальная конфигурация для macOS выглядит следующим образом:

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

Замените path/to/executable фактическим исполняемым файлом, используемым работающим процессом. Оставьте для MIMode значение lldb для этого примера с LLDB; для GDB в macOS требуются отдельные настройки. Отладчику необходимо расположение исполняемого файла для загрузки символов, поэтому наугад выбранный или несвязанный путь может сделать отладку на уровне исходного кода невозможной. Справочник по настройке C/C++

Если подключение завершается ошибкой или точки останова не срабатывают

Убедитесь, что вы выбрали правильный процесс, что соответствующее расширение установлено, а архитектуры процесса и отладчика совместимы. На Apple silicon несоответствие архитектур прямо указано в документации как возможная причина ошибок подключения в C#. Для C/C++ убедитесь, что путь к исполняемому файлу и доступные символы соответствуют работающей сборке. Если процесс принадлежит другому пользователю или защищен macOS, права операционной системы также могут препятствовать подключению; используйте авторизованный процесс и следуйте действующей политике безопасности macOS вместо попыток ее обойти.

Для Node.js используйте средство выбора процессов, предназначенное для этого языка, либо настройте порт inspect; общая конфигурация подключения C/C++ не подойдет. Для C# используйте команду подключения к .NET. Для нативного C/C++ используйте cppdbg с LLDB или отдельно настроенную установку GDB. Эти различия помогают определить дальнейшие действия, когда общая инструкция по «подключению» не подходит для целевого приложения.

По завершении используйте Debug: Stop, чтобы отключиться. В режиме подключения к Node.js в документации VS Code указано, что остановка отключает отладчик, а целевой процесс продолжает работу. Уточните поведение расширения для других сред выполнения, если сохранение процесса активным имеет значение; сеансы подключения (attach) и запуска (launch) не обязательно одинаково реагируют на остановку. VS Code: Node.js debugging

Источники