Отладка приложения Service Fabric с помощью Visual Studio

Отладка локального приложения Service Fabric

Важно!

Удаленная отладка не поддерживается в VS 2022

Вы можете сэкономить время и деньги, развернув приложение Azure Service Fabric и выполнив его отладку в кластере для разработки, состоящем из локальных компьютеров. С помощью Visual Studio 2019 или 2015 можно развернуть приложение в локальном кластере и автоматически подключить отладчик ко всем экземплярам приложения. Для подключения отладчика необходимо запустить Visual Studio от имени администратора.

  1. Запустите кластер локальной разработки, выполнив действия, описанные в статье Настройка среды разработки Service Fabric.

  2. Нажмите клавишу F5 или выберите в меню Отладка>Начать отладку.

    Снимок экрана с меню отладки.

  3. Задайте в коде точки останова и поэтапно выполните приложение, выбирая соответствующие команды в меню Отладка .

    Примечание

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

  4. Окно События диагностики открывается автоматически и позволяет просматривать данные о событиях диагностики в реальном времени.

    Просмотр событий диагностики в режиме реального времени

  5. Кроме того, вы можете открыть окно События диагностики вручную, используя обозреватель облака. В разделе Service Fabric щелкните любой узел правой кнопкой мыши и выберите пункт Показать потоковую передачу трассировок.

    Окно событий диагностики

    Чтобы отфильтровать трассировки по определенной службе или приложению, включите потоковую передачу трассировки по этой службе или приложению.

  6. События диагностики можно просматривать в автоматически созданном файле ServiceEventSource.cs и вызывать из кода приложения.

    ServiceEventSource.Current.ServiceMessage(this, "My ServiceMessage with a parameter {0}", result.Value.ToString());
    
  7. В окне События диагностики поддерживаются фильтрация, приостановка и проверка событий в реальном времени. Фильтр представляет собой простой поиск по строкам сообщений о событиях, включая их содержимое.

    Фильтрация, приостановка, возобновление и проверка событий в реальном времени

  8. Отладка служб аналогична отладке приложений. Обычно для простой отладки точки останова задаются в Visual Studio. Несмотря на то, что надежные коллекции реплицируются на нескольких узлах, они все равно реализуют интерфейс IEnumerable. В этой реализации вы можете использовать представление результатов в Visual Studio во время отладки для просмотра внутренних сведений. Для этого задайте точку останова в любом месте своего кода.

    Запуск отладки приложения

Запуск скрипта в процессе отладки

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

В Visual Studio можно добавить файл с именем Start-Service.ps1 в папку Scripts проекта приложения Service Fabric (.sfproj). Этот скрипт будет вызываться после создания приложения в локальном кластере.

Отладка удаленного приложения Service Fabric

Если приложения Service Fabric выполняются в кластере Service Fabric в Azure, они доступны для удаленной отладки непосредственно из Visual Studio.

Примечание

Компоненту требуется пакет SDK 2.0 для Service Fabric и пакет SDK Azure для .NET 2.9.

Предупреждение

Удаленная отладка предназначена для сценариев разработки и тестирования и не должна использоваться в производственной среде, поскольку влияет на запущенные приложения.

  1. Перейдите к своему кластеру в Cloud Explorer. Щелкните правой кнопкой мыши и выберите пункт Включить отладку.

    Включение удаленной отладки

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

  2. Щелкните узел кластера в обозревателе облака правой кнопкой мыши и выберите пункт Подключить отладчик.

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

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

    Выбор процесса

    Имя процесса, к которому нужно подключиться, совпадает с именем сборки для проекта службы.

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

    • При отладке службы без отслеживания состояния сеанс отладки затрагивает все экземпляры службы на всех узлах.

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

    • Чтобы перехватывать только релевантные секции или экземпляры определенной службы, можно использовать условные точки останова, которые будут останавливать только определенную секцию или экземпляр.

      Условная точка останова

      Примечание

      Сейчас отладка кластера Service Fabric с несколькими экземплярами исполняемого имени одной и той же службы не поддерживается.

  4. После того как отладка приложения будет завершена, расширение удаленной отладки можно отключить, щелкнув кластер в обозревателе облака правой кнопкой мыши и выбрав пункт Отключить отладку.

    Отключение удаленной отладки

Потоковая передача трассировок из удаленного узла кластера

Трассировки можно также передавать из удаленного узла кластера в Visual Studio напрямую. Эта функция позволяет передавать события трассировки ETW, возникающие на узле кластера Service Fabric.

Примечание

Компоненту требуется пакет SDK 2.0 для Service Fabric и пакет SDK Azure для .NET 2.9. Эта функция поддерживает только кластеры на платформе Azure.

Предупреждение

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

  1. Перейдите к своему кластеру в Cloud Explorer. Щелкните правой кнопкой мыши и выберите пункт Включить потоковую передачу трассировок.

    Включение трассировки удаленной потоковой передачи

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

  2. Разверните элемент Узлы в обозревателе облака, щелкните правой кнопкой мыши узел, потоковую передачу трассировок с которого вы хотите включить, и выберите пункт Показать потоковую передачу трассировок.

    Просмотр трассировки удаленной потоковой передачи

    Повторите шаг 2 для всех узлов, трассировку которых вы хотите получать. Потоковая передача каждого узла будет отображаться в отдельном окне.

    Теперь вы можете также получать трассировки, которые выпускает Service Fabric и ваши собственные службы. Если вы хотите отфильтровать события по определенному приложению, просто введите название этого приложения в качестве фильтра.

    Просмотр трассировки потоковой передачи

  3. После того как потоковая передача трассировок будет завершена, вы можете отключить удаленную потоковую передачу трассировок, щелкнув кластер в обозревателе облака правой кнопкой мыши и выбрав пункт Отключить трассировки потоковой передачи.

    Отключение трассировки удаленной потоковой передачи

Дальнейшие действия