Поделиться через


Отладка .NET Core в Linux с помощью SSH путем подключения к процессу

Начиная с Visual Studio 2017, вы можете подключиться к процессам .NET Core и .NET 5+, выполняемым в локальном или удаленном развертывании Linux через Secure Shell (SSH). В этой статье описывается, как настроить отладку и как проводить отладку. Сведения о сценариях отладки с помощью контейнеров Docker см. в статье "Присоединение к процессу, запущенному в контейнере Docker " и статьях средств контейнеров . Сведения об отладке Linux в WSL 2 из Visual Studio (без подключения к процессу) см. в статье Отладка приложений .NET Core в WSL 2 с помощью Visual Studio.

Замечание

Для отладки Linux, работающего в службе Azure Kubernetes (AKS), рекомендуется использовать Bridge to Kubernetes вместо подключения к процессу.

Предпосылки

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

    sudo apt-get install openssh-server unzip curl
    

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

  • На сервере Linux установите среду выполнения .NET в Linux и найдите страницу, соответствующую дистрибутиву Linux (например, Ubuntu). Пакет SDK для .NET не требуется.

  • Полные инструкции по ASP.NET Core см. в разделах Размещение ASP.NET Core на Linux с помощью Nginx и Размещение ASP.NET Core на Linux с помощью Apache.

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

При сборке приложения рекомендуется использовать конфигурацию отладки. Отладка скомпилированного розничного кода (конфигурации выпуска) сложнее, чем скомпилированный отладкой код. Если необходимо использовать конфигурацию релиза, сначала отключите функцию "Just My Code". Откройте панель"Параметры>" и разверните раздел"Общие параметры>>всех параметров". Снимите флажок "Включить только мой код ".

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

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

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

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

Перед началом отладки можно использовать несколько методов развертывания приложения. Например, доступны следующие возможности:

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

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

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

Подключение отладчика

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

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

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

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

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

    Нет требований к настройке портов, за исключением порта, на котором работает сервер SSH.

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

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

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

    Снимок экрана подключения к процессу Linux.

    Снимок экрана подключения к процессу Linux.

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

    В появившемся диалоговом окне выберите тип кода, который вы хотите отлаживать. Выберите Managed (.NET Core for Unix).

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

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

    Снимок экрана, где достигнута точка останова.

    Снимок экрана, где достигнута точка останова.