Удаленная отладка Linux в Visual Studio

Обновлено: 20.11.2024

Visual Studio может запускать и отлаживать приложения Python локально и удаленно на компьютере с Windows (см. Удаленная отладка). Он также может выполнять удаленную отладку в другой операционной системе, устройстве или реализации Python, отличной от CPython, с помощью библиотеки ptvsd.

При использовании ptvsd отлаживаемый код Python размещает сервер отладки, к которому может подключиться Visual Studio. Для этого хостинга требуется небольшая модификация вашего кода для импорта и включения сервера, а также может потребоваться настройка сети или брандмауэра на удаленном компьютере для разрешения TCP-соединений.

Настройка компьютера с Linux

Для выполнения этого пошагового руководства необходимы следующие элементы:

  • Удаленный компьютер, работающий под управлением Python в операционной системе, такой как Mac OSX или Linux.
  • В брандмауэре этого компьютера открыт порт 5678 (входящий), который используется по умолчанию для удаленной отладки.

Вы можете легко создать виртуальную машину Linux в Azure и получить к ней доступ с помощью удаленного рабочего стола из Windows. Ubuntu для ВМ удобен тем, что Python установлен по умолчанию; в противном случае см. список дополнительных мест для загрузки Python в разделе Установка интерпретатора Python по вашему выбору.

Подробнее о создании правила брандмауэра для виртуальной машины Azure см. в разделе Открытие портов на виртуальную машину в Azure с помощью портала Azure.

Подготовить скрипт к отладке

На удаленном компьютере создайте файл Python с именем guessing-game.py со следующим кодом:

Установите пакет ptvsd в свою среду с помощью pip3 install ptvsd .

Рекомендуется записать версию установленного ptvsd на случай, если она понадобится для устранения неполадок; список ptvsd также показывает доступные версии.

Включите удаленную отладку, добавив приведенный ниже код как можно раньше в файл guessing-game.py перед другим кодом. (Хотя это и не является строгим требованием, невозможно отлаживать любые фоновые потоки, созданные до вызова функции enable_attach.)

Сохраните файл и запустите python3 Guanging-game.py. Вызов enable_attach выполняется в фоновом режиме и ожидает входящих подключений, пока вы взаимодействуете с программой. При желании после enable_attach можно вызвать функцию wait_for_attach, чтобы заблокировать программу до тех пор, пока не подключится отладчик.

Помимо enable_attach и wait_for_attach, ptvsd также предоставляет вспомогательную функцию break_into_debugger, которая служит программной точкой останова, если отладчик подключен. Существует также функция is_attached, которая возвращает True, если отладчик подключен (обратите внимание, что нет необходимости проверять этот результат перед вызовом любых других функций ptvsd).

Удаленное подключение из инструментов Python

В этих шагах мы устанавливаем простую точку останова для остановки удаленного процесса.

Создайте копию удаленного файла на локальном компьютере и откройте ее в Visual Studio. Неважно, где находится файл, но его имя должно совпадать с именем скрипта на удаленном компьютере.

(Необязательно) Чтобы иметь IntelliSense для ptvsd на локальном компьютере, установите пакет ptvsd в среду Python.

Выберите Отладка > Присоединить к процессу.

В появившемся диалоговом окне «Присоединение к процессу» установите для параметра «Тип подключения» значение «Удаленный Python (ptvsd)». (В более ранних версиях Visual Studio эти команды называются Transport и удаленная отладка Python.)

Нажмите Enter, чтобы заполнить список доступных процессов ptvsd на этом компьютере:

Если вы случайно запустите другую программу на удаленном компьютере после заполнения этого списка, нажмите кнопку «Обновить».

Выберите процесс для отладки, а затем нажмите Прикрепить или дважды щелкните процесс.

Затем Visual Studio переключается в режим отладки, в то время как сценарий продолжает выполняться на удаленном компьютере, предоставляя все обычные возможности отладки. Например, установите точку останова на строке «если предположить», затем переключитесь на удаленный компьютер и введите другое предположение. После этого Visual Studio на вашем локальном компьютере остановится в этой точке останова, отобразит локальные переменные и т. д.:

Когда вы прекращаете отладку, Visual Studio отключается от программы, которая продолжает работать на удаленном компьютере. ptvsd также продолжает отслеживать подключение отладчиков, поэтому вы можете снова подключиться к процессу в любое время.

Устранение неполадок с подключением

Убедитесь, что вы выбрали удаленный Python (ptvsd) для типа подключения (удаленная отладка Python для транспорта с более ранними версиями).

Убедитесь, что секрет в целевом объекте соединения (или квалификаторе) точно соответствует секрету в удаленном коде.

Убедитесь, что IP-адрес в целевом объекте подключения (или квалификаторе) совпадает с IP-адресом удаленного компьютера.

Убедитесь, что вы открыли порт удаленной отладки на удаленном компьютере и указали суффикс порта в цели подключения, например :5678 .

  • Если вам нужно использовать другой порт, вы можете указать его в вызове enable_attach, используя аргумент адреса, как в ptvsd.enable_attach(address = ('0.0.0.0', 8080)) . В этом случае откройте этот конкретный порт в брандмауэре.

Убедитесь, что версия ptvsd, установленная на удаленном компьютере и возвращенная списком pip3, совпадает с версией инструментов Python, которые вы используете в Visual Studio, в таблице ниже. При необходимости обновите ptvsd на удаленном компьютере.

Использование ptvsd 3.x

Следующая информация относится только к удаленной отладке с помощью ptvsd 3.x, которая содержит некоторые функции, удаленные в ptvsd 4.x.

В ptvsd 3.x функция enable_attach требовала, чтобы вы передавали «секрет» в качестве первого аргумента, ограничивающего доступ к запущенному сценарию. Вы вводите этот секрет при подключении удаленного отладчика. Хотя это и не рекомендуется, вы можете разрешить подключение любому, используйте enable_attach(secret=None) .

Целевой URL-адрес подключения: tcp:// @ :5678, где строка, переданная enable_attach в коде Python.

По умолчанию подключение к серверу удаленной отладки ptvsd 3.x защищено только секретом, а все данные передаются в виде обычного текста. Для более безопасного соединения ptvsd 3.x поддерживает SSL с использованием протокола tcsp, который вы настраиваете следующим образом:

На удаленном компьютере сгенерируйте отдельные самозаверяющие сертификаты и файлы ключей с помощью openssl:

При появлении запроса используйте имя хоста или IP-адрес (в зависимости от того, что вы используете для подключения) в качестве общего имени при запросе openssl.

(Дополнительные сведения см. в разделе «Самозаверяющие сертификаты» в документации модуля Python ssl. Обратите внимание, что команда в этих документах создает только один комбинированный файл.)

В коде измените вызов enable_attach, чтобы включить аргументы certfile и keyfile, используя имена файлов в качестве значений (эти аргументы имеют то же значение, что и для стандартной функции Python ssl.wrap_socket):

Вы также можете внести такие же изменения в файл кода на локальном компьютере, но, поскольку этот код на самом деле не запускается, в этом нет строгой необходимости.

Перезапустите программу Python на удаленном компьютере, подготовив ее к отладке.

Защитите канал, добавив сертификат в доверенный корневой ЦС на компьютере Windows с помощью Visual Studio:

  1. Скопируйте файл сертификата с удаленного компьютера на локальный.
  2. Откройте панель управления и выберите "Администрирование" > "Управление сертификатами компьютеров".
  3. В появившемся окне слева разверните узел "Доверенные корневые центры сертификации", щелкните правой кнопкой мыши "Сертификаты" и выберите "Все задачи" > "Импорт".
  4. Перейдите к файлу .cer, скопированному с удаленного компьютера, и выберите его, а затем нажмите в диалоговом окне, чтобы завершить импорт.

Повторите процесс подключения в Visual Studio, как описано ранее, теперь используя tcps:// в качестве протокола для цели подключения (или квалификатора).

Visual Studio сообщает о возможных проблемах с сертификатами при подключении через SSL. Вы можете проигнорировать предупреждения и продолжить, но хотя канал по-прежнему зашифрован от прослушивания, он может быть открыт для атак типа «человек посередине».

Если вы видите ниже предупреждение о том, что удаленный сертификат не является доверенным, это означает, что вы неправильно добавили сертификат в доверенный корневой ЦС. Проверьте эти шаги и повторите попытку.

Если вы видите, что имя удаленного сертификата не соответствует имени хоста ниже, это означает, что вы не использовали правильное имя хоста или IP-адрес в качестве общего имени при создании сертификата.

Visual Studio может запускать и отлаживать приложения Python локально и удаленно на компьютере с Windows (см. Удаленная отладка). Он также может выполнять удаленную отладку в другой операционной системе, устройстве или реализации Python, отличной от CPython, с помощью библиотеки отладки.

При использовании debugpy отлаживаемый код Python размещает сервер отладки, к которому может подключиться Visual Studio.Для этого хостинга требуется небольшая модификация вашего кода для импорта и включения сервера, а также может потребоваться настройка сети или брандмауэра на удаленном компьютере для разрешения TCP-соединений.

Для Visual Studio 2019 версии 16.4 и более ранних версий использовалась библиотека ptvsd. Библиотека отладки заменила ptvsd 4 в Visual Studio 2019 версии 16.5.

Настройка компьютера с Linux

Для выполнения этого пошагового руководства необходимы следующие элементы:

  • Удаленный компьютер, работающий под управлением Python в операционной системе, такой как Mac OSX или Linux.
  • В брандмауэре этого компьютера открыт порт 5678 (входящий), который используется по умолчанию для удаленной отладки.

Это пошаговое руководство основано на Visual Studio 2019 версии 16.6.

Вы можете легко создать виртуальную машину Linux в Azure и получить к ней доступ с помощью удаленного рабочего стола из Windows. Ubuntu для ВМ удобен тем, что Python установлен по умолчанию; в противном случае см. список дополнительных мест для загрузки Python в разделе Установка интерпретатора Python по вашему выбору.

Подробнее о создании правила брандмауэра для виртуальной машины Azure см. в разделе Открытие портов на виртуальную машину в Azure с помощью портала Azure.

Подготовить скрипт к отладке

На удаленном компьютере создайте файл Python с именем guessing-game.py со следующим кодом:

Установите пакет отладки в свою среду с помощью pip3 install debugpy .

Рекомендуется записать установленную версию debugpy на случай, если она понадобится для устранения неполадок; список отладки также показывает доступные версии.

Включите удаленную отладку, добавив приведенный ниже код как можно раньше в файл guessing-game.py перед другим кодом. (Хотя это и не является строгим требованием, невозможно отлаживать любые фоновые потоки, созданные до вызова функции прослушивания.)

Сохраните файл и запустите python3 Guanging-game.py. Вызов прослушивания выполняется в фоновом режиме и ожидает входящих подключений, пока вы взаимодействуете с программой. При желании после прослушивания можно вызвать функцию wait_for_client, чтобы заблокировать программу до тех пор, пока не подключится отладчик.

В дополнение к listen и wait_for_client, debugpy также предоставляет точку останова вспомогательной функции, которая служит программной точкой останова, если отладчик подключен. Существует также функция is_client_connected, которая возвращает значение True, если отладчик подключен (обратите внимание, что нет необходимости проверять этот результат перед вызовом любых других функций отладки).

Удаленное подключение из инструментов Python

В этих шагах мы устанавливаем простую точку останова для остановки удаленного процесса.

Создайте копию удаленного файла на локальном компьютере и откройте ее в Visual Studio. Неважно, где находится файл, но его имя должно совпадать с именем скрипта на удаленном компьютере.

(Необязательно) Чтобы использовать IntelliSense для отладки на локальном компьютере, установите пакет отладки в среду Python.

Выберите Отладка > Присоединить к процессу.

В появившемся диалоговом окне «Присоединение к процессу» установите для параметра «Тип подключения» значение «Удаленный Python (отладка)».

Нажмите Enter, чтобы заполнить список доступных процессов отладки на этом компьютере:

Если вы случайно запустите другую программу на удаленном компьютере после заполнения этого списка, нажмите кнопку «Обновить».

Выберите процесс для отладки, а затем нажмите Прикрепить или дважды щелкните процесс.

Затем Visual Studio переключается в режим отладки, в то время как сценарий продолжает выполняться на удаленном компьютере, предоставляя все обычные возможности отладки. Например, установите точку останова на строке «если предположить», затем переключитесь на удаленный компьютер и введите другое предположение. После этого Visual Studio на вашем локальном компьютере остановится в этой точке останова, отобразит локальные переменные и т. д.:

Когда вы прекращаете отладку, Visual Studio отключается от программы, которая продолжает работать на удаленном компьютере. debugpy также продолжает ожидать подключения отладчиков, так что вы можете снова подключиться к процессу в любое время.

Устранение неполадок с подключением

Убедитесь, что вы выбрали удаленный Python (debugpy) в качестве типа подключения

Убедитесь, что секрет в целевом соединении точно совпадает с секретом в удаленном коде.

Убедитесь, что IP-адрес в целевом объекте подключения совпадает с IP-адресом удаленного компьютера.

Убедитесь, что вы открыли порт удаленной отладки на удаленном компьютере и указали суффикс порта в цели подключения, например :5678 .

  • Если вам нужно использовать другой порт, вы можете указать его в listen , как в debugpy.listen((host, port)) . В этом случае откройте этот конкретный порт в брандмауэре.

Убедитесь, что версия debugpy, установленная на удаленном компьютере и возвращенная списком pip3, совпадает с версией инструментов Python, которые вы используете в Visual Studio, в таблице ниже. При необходимости обновите debugpy на удаленном компьютере.

Visual Studio 2019 версии 16.0–16.4 использовала ptvsd, а не debugpy. Процесс в этом пошаговом руководстве для этих версий аналогичен, но имена функций различаются. Visual Studio 2019 версии 16.5 использует отладку, но имена функций были такими же, как в ptvsd. Вместо listen вы должны использовать enable_attach. Вместо wait_for_client вы должны использовать wait_for_attach. Вместо точки останова вы должны использовать break_into_debugger .

Использование ptvsd 3.x для отладки старых версий

Visual Studio 2017 версии 15.8 и более поздних версий использует отладчик на основе ptvsd версии 4.1+. Visual Studio 2019 версии 16.5 и более поздних версий использует отладчик на основе debugpy. Эти версии отладчика совместимы с Python 2.7 и Python 3.5+. Если вы используете Python 2.6, 3.1–3.4 или IronPython, Visual Studio показывает ошибку «Отладчик не поддерживает эту среду Python». Следующая информация относится только к удаленной отладке с помощью ptvsd 3.x.

В ptvsd 3.x функция enable_attach требовала, чтобы вы передавали «секрет» в качестве первого аргумента, ограничивающего доступ к запущенному сценарию. Вы вводите этот секрет при подключении удаленного отладчика. Хотя это и не рекомендуется, вы можете разрешить подключение любому, используйте enable_attach(secret=None) .

Целевой URL-адрес подключения: tcp:// @ :5678, где строка, переданная enable_attach в коде Python.

По умолчанию подключение к серверу удаленной отладки ptvsd 3.x защищено только секретом, а все данные передаются в виде обычного текста. Для более безопасного соединения ptvsd 3.x поддерживает SSL с использованием протокола tcsp, который вы настраиваете следующим образом:

На удаленном компьютере сгенерируйте отдельные самозаверяющие сертификаты и файлы ключей с помощью openssl:

При появлении запроса используйте имя хоста или IP-адрес (в зависимости от того, что вы используете для подключения) в качестве общего имени при запросе openssl.

(Дополнительные сведения см. в разделе «Самозаверяющие сертификаты» в документации модуля Python ssl. Обратите внимание, что команда в этих документах создает только один комбинированный файл.)

В коде измените вызов enable_attach, чтобы включить аргументы certfile и keyfile, используя имена файлов в качестве значений (эти аргументы имеют то же значение, что и для стандартной функции Python ssl.wrap_socket):

Вы также можете внести такие же изменения в файл кода на локальном компьютере, но, поскольку этот код на самом деле не запускается, в этом нет строгой необходимости.

Перезапустите программу Python на удаленном компьютере, подготовив ее к отладке.

Защитите канал, добавив сертификат в доверенный корневой ЦС на компьютере Windows с помощью Visual Studio:

  1. Скопируйте файл сертификата с удаленного компьютера на локальный.
  2. Откройте панель управления и выберите "Администрирование" > "Управление сертификатами компьютеров".
  3. В появившемся окне слева разверните узел "Доверенные корневые центры сертификации", щелкните правой кнопкой мыши "Сертификаты" и выберите "Все задачи" > "Импорт".
  4. Перейдите к файлу .cer, скопированному с удаленного компьютера, и выберите его, а затем нажмите в диалоговом окне, чтобы завершить импорт.

Повторите процесс подключения в Visual Studio, как описано ранее, теперь используя tcps:// в качестве протокола для цели подключения (или квалификатора).

Visual Studio сообщает о возможных проблемах с сертификатами при подключении через SSL. Вы можете проигнорировать предупреждения и продолжить, но хотя канал по-прежнему зашифрован от прослушивания, он может быть открыт для атак типа «человек посередине».

Если вы видите ниже предупреждение о том, что удаленный сертификат не является доверенным, это означает, что вы неправильно добавили сертификат в доверенный корневой ЦС. Проверьте эти шаги и повторите попытку.

Если вы видите, что имя удаленного сертификата не соответствует имени хоста ниже, это означает, что вы не использовали правильное имя хоста или IP-адрес в качестве общего имени при создании сертификата.

Поддержка Linux доступна в Visual Studio 2017 и более поздних версиях.

Вы можете настроить проект Linux для удаленного компьютера или подсистемы Windows для Linux (WSL). Как для удаленных компьютеров, так и для WSL необходимо настроить удаленное подключение в Visual Studio 2017.

Вы можете настроить проект Linux для удаленного компьютера или подсистемы Windows для Linux (WSL). Для удаленного компьютера необходимо настроить удаленное подключение в Visual Studio. Чтобы подключиться к WSL, перейдите к разделу «Подключение к WSL».

При использовании удаленного подключения Visual Studio создает проекты C++ Linux на удаленном компьютере. Неважно, физическая это машина, виртуальная машина в облаке или WSL. Чтобы построить проект, Visual Studio копирует исходный код на ваш удаленный компьютер Linux. Затем код компилируется на основе настроек Visual Studio.

Начиная с Visual Studio 2019 версии 16.5, Visual Studio поддерживает безопасные, соответствующие Федеральному стандарту обработки информации (FIPS) 140-2 криптографические подключения к системам Linux для удаленной разработки. Чтобы использовать соединение, совместимое с FIPS, выполните действия, описанные в разделе Настройка безопасной удаленной разработки Linux, совместимой с FIPS.

Настройте SSH-сервер в удаленной системе

Если ssh еще не настроен и не запущен в вашей системе Linux, выполните следующие действия, чтобы установить его. В примерах в этой статье используется Ubuntu 18.04 LTS с сервером OpenSSH версии 7.6. Однако инструкции должны быть одинаковыми для любого дистрибутива, использующего относительно новую версию OpenSSH.

В системе Linux установите и запустите сервер OpenSSH:

Если вы хотите, чтобы сервер ssh запускался автоматически при загрузке системы, включите его с помощью systemctl:

Настройка удаленного подключения

В Visual Studio выберите «Инструменты» > «Параметры» в строке меню, чтобы открыть диалоговое окно «Параметры». Затем выберите Cross Platform > Connection Manager, чтобы открыть диалоговое окно Connection Manager.

Если вы еще не настроили подключение в Visual Studio, при первом создании проекта Visual Studio откроет для вас диалоговое окно диспетчера подключений.

В диалоговом окне "Диспетчер подключений" нажмите кнопку "Добавить", чтобы добавить новое подключение.

В любом случае отображается окно «Подключиться к удаленной системе».

Введите следующую информацию:

< /таблица>

Для аутентификации можно использовать либо пароль, либо файл ключа и парольную фразу. Для многих сценариев разработки достаточно аутентификации по паролю, но файлы ключей более безопасны. Если у вас уже есть пара ключей, ее можно использовать повторно. В настоящее время Visual Studio поддерживает только ключи RSA и DSA для удаленных подключений.

Нажмите кнопку «Подключиться», чтобы попытаться подключиться к удаленному компьютеру.

Если соединение установлено успешно, Visual Studio настраивает IntelliSense для использования удаленных заголовков. Дополнительные сведения см. в разделе IntelliSense для заголовков в удаленных системах.

В случае сбоя подключения поля ввода, которые необходимо изменить, обведены красным.

Если вы используете файлы ключей для аутентификации, убедитесь, что SSH-сервер целевой машины работает и правильно настроен.

Если у вас возникли проблемы с подключением к WSL на локальном хосте, см. раздел Устранение проблем с подключением к WSL на локальном хосте.

Подтверждение ключа хоста

В Visual Studio версии 16.10 или более поздней вам будет предложено проверить отпечаток ключа хоста сервера при первом подключении Visual Studio к удаленной системе. Вы можете быть знакомы с этим процессом, если раньше использовали клиент командной строки OpenSSH или PuTTY. Отпечаток пальца идентифицирует сервер. Visual Studio использует отпечаток пальца, чтобы убедиться, что он подключается к нужному и доверенному серверу.

При первом установлении Visual Studio нового удаленного подключения вам будет предложено принять или отклонить отпечаток ключа хоста, представленный сервером. Или в любое время, когда есть изменения в кэшированном отпечатке пальца. Вы также можете проверить отпечаток пальца по запросу: выберите подключение в Диспетчере подключений и выберите Подтвердить.

При обновлении до Visual Studio 16.10 или более поздней версии из более старой версии, он рассматривает любые существующие удаленные подключения как новые подключения. Сначала вам будет предложено принять отпечаток ключа хоста. Затем Visual Studio устанавливает соединение и кэширует принятый отпечаток.

Вы также можете обновить удаленные подключения из ConnectionManager.exe, используя аргумент обновления.

Поддерживаемые алгоритмы SSH

Начиная с Visual Studio версии 16.9, удалена поддержка старых небезопасных алгоритмов SSH, используемых для шифрования данных и обмена ключами. Поддерживаются только следующие алгоритмы. Они поддерживаются как для обмена данными по протоколу SSH между клиентом и сервером, так и между сервером и клиентом:

Настройте SSH-сервер

Во-первых, немного предыстории. Вы не можете выбрать алгоритм SSH для использования в Visual Studio. Вместо этого алгоритм определяется во время начального рукопожатия с сервером SSH. Каждая сторона (клиент и сервер) предоставляет список алгоритмов, которые она поддерживает, а затем выбирается первый алгоритм, общий для обеих сторон. Соединение установлено успешно, если Visual Studio и сервер используют хотя бы один общий алгоритм для шифрования, HMAC, обмена ключами и т. д.

Файл конфигурации Open SSH ( sshd_config ) не указывает, какой алгоритм использовать по умолчанию. Сервер SSH должен использовать безопасные значения по умолчанию, если алгоритмы не указаны. Эти значения по умолчанию зависят от версии и поставщика сервера SSH. Если Visual Studio не поддерживает эти значения по умолчанию, вы, скорее всего, увидите сообщение об ошибке, например: «Не удалось подключиться к удаленной системе. Не найден общий алгоритм клиент-сервер HMAC». Ошибка также может появиться, если сервер SSH настроен на использование алгоритмов, которые Visual Studio не поддерживает.

Сервер SSH по умолчанию в большинстве современных дистрибутивов Linux должен работать с Visual Studio. Однако вы можете использовать более старый SSH-сервер, настроенный на использование старых небезопасных алгоритмов. В следующем примере показано, как выполнить обновление до более безопасных версий.

В следующем примере сервер SSH использует небезопасный алгоритм hmac-sha1, который не поддерживается Visual Studio 16.9. Если сервер SSH использует OpenSSH, вы можете отредактировать файл /etc/ssh/sshd_config, как показано ниже, чтобы включить более безопасные алгоритмы. Для других серверов SSH обратитесь к документации сервера, чтобы узнать, как их настроить.

Во-первых, убедитесь, что набор алгоритмов, используемых вашим сервером, включает алгоритмы, поддерживаемые Visual Studio. Выполните следующую команду на удаленном компьютере, чтобы получить список алгоритмов, поддерживаемых сервером:

Эта команда выводит примерно следующее:

В выходных данных перечислены все алгоритмы шифрования, HMAC, обмена ключами и ключей хоста, поддерживаемые вашим SSH-сервером. Если в списке нет алгоритмов, поддерживаемых Visual Studio, вам необходимо обновить SSH-сервер, прежде чем продолжить.

Вы можете включить алгоритмы, поддерживаемые Visual Studio, отредактировав файл /etc/ssh/sshd_config на удаленном компьютере. В следующих примерах показано, как добавить различные типы алгоритмов в этот файл конфигурации.

Эти примеры можно добавить в любое место в файле /etc/ssh/sshd_config. Убедитесь, что они находятся на своих линиях.

После редактирования файла перезапустите SSH-сервер ( sudo service ssh restart в Ubuntu) и попытайтесь снова подключиться из Visual Studio.

Предпосылки

На сервере Linux вам необходимо установить SSH-сервер, разархивировать и установить с помощью curl или wget. Например, в Ubuntu вы можете сделать это, запустив:

Должен быть включен SFTP и SSH. Большинство дистрибутивов SSH устанавливают и включают SFTP по умолчанию, но это не всегда так.

Подготовьте приложение к отладке

Чтобы подготовить приложение к отладке:

Рассмотрите возможность использования конфигурации отладки при сборке приложения. Гораздо сложнее отлаживать код, скомпилированный для розничной продажи (конфигурация Release), чем код, скомпилированный для отладки. Если вам нужно использовать конфигурацию Release, сначала отключите Just My Code. Чтобы отключить этот параметр, выберите «Инструменты» > «Параметры» > «Отладка», а затем снимите флажок «Включить только мой код».

Убедитесь, что ваш проект настроен на создание переносимых PDB-файлов (настройка по умолчанию) и убедитесь, что PDB-файлы находятся в том же месте, что и DLL. Чтобы настроить это в Visual Studio, щелкните проект правой кнопкой мыши и выберите «Свойства» > «Сборка» > «Дополнительно» > «Отладочная информация».

Создайте и разверните приложение

Вы можете использовать несколько методов для развертывания приложения перед отладкой. Например, вы можете:

Скопируйте исходники на целевой компьютер и выполните сборку с помощью dotnet на компьютере с Linux.

Создайте приложение в Windows, а затем перенесите артефакты сборки на компьютер с Linux. (Артефакты сборки состоят из самого приложения, переносимых PDB-файлов, любых библиотек времени выполнения, от которых оно может зависеть, и файла .deps.json.)

После развертывания приложения запустите его.

Подключить отладчик

Когда приложение запущено на компьютере с Linux, вы готовы подключить отладчик.

В Visual Studio выберите «Отладка» > «Присоединить к процессу…».

В списке "Тип подключения" выберите SSH.

Измените цель подключения на IP-адрес или имя хоста целевого компьютера.

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

Требования к порту для настройки отсутствуют, за исключением порта, на котором работает SSH-сервер.

Найдите процесс, который вы хотите отладить.

Ваш код выполняется либо в процессе с уникальным именем, либо в процессе с именем dotnet. Чтобы найти интересующий вас процесс, проверьте столбец Название, в котором показаны аргументы командной строки для процесса.

В следующем примере вы видите список процессов с удаленного компьютера Linux через транспорт SSH, отображаемый в диалоговом окне «Присоединение к процессу».

Выберите «Прикрепить».

Используйте функции отладки Visual Studio для отладки приложения.

В следующем примере вы видите, как отладчик Visual Studio остановился в точке останова в коде, работающем на удаленном компьютере с Linux.

Visual Studio 2019 предлагает поддержку удаленной отладки для проектов MSBuild и CMake, предназначенных для Windows и Linux. Благодаря удаленной отладке теперь возможны следующие и другие сценарии:

  • Отладка на рабочих машинах без установленных инструментов разработки, кроме инструментов удаленного отладчика.
  • Ориентация на среды разработки, которые вы не используете ежедневно (например, менее распространенные операционные системы или конфигурации программного обеспечения).
  • Ориентация на среды, в которых Visual Studio недоступна (например, компьютеры ARM64 или неподдерживаемые версии операционной системы).

Чтобы гарантировать удобство удаленной отладки для пользователей, необходимо скопировать некоторые дополнительные зависимости на целевой компьютер. К счастью, мы делаем это за вас и автоматически развертываем эти зависимости вместе со встроенными двоичными файлами из вашего проекта, которые мы считаем необходимыми для отладки. В частности, в сценариях Windows мы автоматически развертываем универсальную библиотеку CRT (только для отладки, поскольку релизная версия поставляется с операционной системой Windows), а также библиотеки VCRuntime, которые необходимы для запуска и отладки двоичных файлов в средах, где эти библиотеки недоступны на система.

Пошаговые инструкции по различным рабочим процессам удаленной отладки см. в следующих руководствах:

Примечание. Хотя в Visual Studio 2019 можно создавать проекты MSBuild и CMake для Linux и Windows, использование CMake рекомендуется для разработки под Linux, поскольку на обеих платформах можно использовать одни и те же файлы проекта.

Возможность пользовательской настройки удаленного развертывания

Вне зависимости от того, ориентируетесь ли вы на Windows или Linux, используете MSBuild или CMake, Visual Studio обеспечивает гибкость настройки развертывания. Мы рассмотрим некоторые из них в подразделах ниже.

Проекты MSBuild для Windows

Вы можете очень легко развертывать и отлаживать проекты MSBuild, предназначенные для удаленного компьютера с Windows, в Visual Studio 2019. На страницах свойств на вкладке «Отладка» вам потребуется указать свойства «Удаленная команда», «Рабочий каталог», «Имя удаленного сервера» и «Каталог развертывания». как минимум. Если вы хотите развернуть дополнительные файлы, вам нужно будет указать их в свойстве Дополнительные файлы для развертывания.

Visual Studio 2019 позволяет указывать как отладочную, так и конечную версии библиотек среды выполнения. Для этого необходимо задать для свойств Развернуть библиотеки времени выполнения отладки Visual C++ и Развернуть библиотеки времени выполнения Visual C++ значение Да.

После настройки конфигурации Visual Studio позаботится о развертывании всех файлов (включая необходимые библиотеки ucrt и vcruntime) на удаленный компьютер.

Проекты MSBuild для Linux

При настройке Linux с помощью проекта MSBuild вы можете указать компьютер, отличный от компьютера сборки (по умолчанию), для развертывания и отладки, как показано ниже:

По умолчанию на удаленную отладочную машину будут развернуты только файлы, необходимые для отладки процесса. Однако в некоторых случаях вам может потребоваться больший контроль над развертыванием вашего проекта. В этих случаях вы можете добавить приведенные ниже элементы кода MSBuild к вашему файлу .vcxproj, убедившись, что вы указали фактический исходный и целевой пути:

Вы также можете указать в своем решении дополнительные исходные файлы, которые вы хотите развернуть, если вы: щелкните правой кнопкой мыши исходный файл в обозревателе решений > выберите свойства > установите для свойства "Содержимое" значение "да".

Проекты CMake для Windows

Visual Studio 2019 поддерживает развертывание проектов CMake на удаленном компьютере с Windows и их отладку с помощью удаленных инструментов Visual Studio. Вы можете указать тип и свойства remoteMachineName в файле launch.vs.json.

Visual Studio 2019 позволяет указывать как отладочную, так и конечную версии библиотек среды выполнения. Для этого необходимо установить для свойств deployDebugRuntimeLibraries и deployRuntimeLibraries значение true.

Содержимое выходных данных проекта будет автоматически развернуто в C:\Windows Default Deploy Directory\ на удаленном компьютере. Если вы хотите указать другое местоположение, вы можете настроить его в свойстве deployDirectory. Если вы вообще не хотите развертывать файлы, установите для параметра disableDeploy значение true.

Кроме того, вы можете указать отдельные дополнительные файлы или целые каталоги, которые вы хотите развертывать каждый раз, если есть какие-то внешние исходные файлы/файлы содержимого, которые вы хотите развернуть. Для этого вы добавляете следующий блок в свой файл launch.vs.json (убедитесь, что вы заменили example.cpp/exampleDirectory фактическим путем к вашему файлу/каталогу):

Проекты CMake для Linux

При настройке Linux с помощью CMake вы можете указать компьютер, отличный от компьютера сборки (по умолчанию), для развертывания и отладки. Для этого просто установите файл json remoteMachineName для одного из установленных подключений в диспетчере подключений (IntelliSense заполнит список всех доступных параметров).

Вы также можете настроить место развертывания на целевом компьютере, задав для свойства deployDirectory в файле launch.vs.json нужный каталог.

Кроме того, если вы хотите полностью контролировать свое развертывание, вы можете добавить следующий блок кода в свой файл launch.vs.json. Например:

Оставьте свой отзыв

Загрузите последнюю предварительную версию Visual Studio 2019 и попробуйте ее сегодня. Мы хотели бы услышать от вас, чтобы помочь нам расставить приоритеты и создать правильные функции для вас. С нами можно связаться через комментарии ниже, сообщество разработчиков и Twitter (@VisualC). Лучший способ сообщить об ошибке или предложить функцию — через сообщество разработчиков.

Читайте также:

Запись Описание
Имя хоста Имя или IP-адрес вашего целевого устройства
Порт Порт, на котором работает служба SSH, обычно 22
Имя пользователя Пользователь для аутентификации
Тип аутентификации Поддерживаются как пароль, так и закрытый ключ< /td>
Пароль Пароль для введенного имени пользователя
Файл закрытого ключа Файл закрытого ключа, созданный для соединения ssh
Парольная фраза Парольная фраза, используемая с выбранным выше закрытым ключом