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

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

Примечание.

Для отладки Linux, работающей на Служба Azure Kubernetes (AKS), рекомендуется использовать мост к 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.

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

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

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

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

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

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

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

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

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

После запуска приложения на компьютере с Linux можно подключить отладчик.

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

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

  3. В поле Цель подключения укажите IP-адрес или имя узла целевого компьютера.

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

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

  4. Найдите процесс, который нужно отладить.

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

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

    Attach to Linux process

  5. Выберите Присоединиться.

  6. В появившемся диалоговом окне выберите тип кода для отладки. Выберите Управляемый (.NET Core для Unix).

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

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

    Hit a breakpoint