Отладка работающих приложений ASP.NET службы Azure Kubernetes с использованием Snapshot Debugger

Средство Snapshot Debugger создает моментальный снимок рабочих приложений при выполнении интересующего вас кода. Чтобы указать отладчику на необходимость создать моментальный снимок, следует установить точки прикрепления и точки ведения в коде. Отладчик позволяет увидеть источник ошибки, не затрагивая трафик рабочего приложения. Средство Snapshot Debugger позволяет значительно сократить затраты времени на устранение проблем, возникающих в рабочих средах.

Точки моментальных снимков и точки ведения журнала похожи на точки останова, но в отличие от точек останова, точки моментальных снимков не приостанавливают работу приложения при выполненной строке. Как правило, создание моментального снимка в точке прикрепления занимает 10–20 мс.

При работе с этим руководством вы сделаете следующее:

  • запуск Snapshot Debugger;
  • задание точки моментальных снимков и просмотр моментального снимка;
  • Задание точки ведения журнала

Необходимые компоненты

  • Средство Snapshot Debugger для служб Azure Kubernetes доступно только для Visual Studio 2019 Enterprise или более поздней версии с рабочей нагрузкой разработки Azure. (На вкладке Отдельные компоненты его можно найти в разделе Отладка и тестирование>Отладчик моментальных снимков.)

    Установите пакет Visual Studio 2019 Enterprise, если он еще не установлен.

  • Коллекция моментальных снимков доступна для следующих веб-приложений службы Azure Kubernetes.

    • Приложения ASP.NET Core, выполняющиеся на платформе .NET Core 2.2 или более поздней версии под управлением Debian 9.

    • Приложения ASP.NET Core, выполняющиеся на платформе .NET Core 2.2 или более поздней версии под управлением Alpine 3.8.

    • Приложения ASP.NET Core, выполняющиеся на платформе .NET Core 2.2 или более поздней версии под управлением Ubuntu 18.04.

      Примечание.

      Чтобы обеспечить поддержку Snapshot Debugger в AKS, мы предоставили репозиторий с настройками файлов Docker, демонстрирующий настройки в образах Docker.

Открытие проекта и запуск Snapshot Debugger

  1. Откройте проект, моментальный снимок которого хотите отладить.

    Важно!

    Для отладки моментальных снимков необходимо открыть ту же версию исходного кода, которая опубликована в службе Azure Kubernetes.

  2. Выберите Отладка> Подключить Snapshot Debugger.... Выберите ресурс AKS, в котором развернут ваш проект, и учетную запись хранения Azure, а затем нажмите Подключить. Snapshot Debugger также поддерживает Службу приложений Azure, а также виртуальные машины Azure и масштабируемые наборы виртуальных машин.

    Launch the snapshot debugger from the Debug menu

    Select Azure Resource

    Примечание.

    (Visual Studio 2019 версии 16.2 и выше) В Snapshot Debugger включена поддержка облака Azure. Убедитесь, что выбранные ресурс Azure и учетная запись хранения Azure находятся в одном и том же облаке. Обратитесь к администратору Azure, если у вас возникли вопросы о конфигурациях предприятия для обеспечения соответствия требованиям Azure.

Visual Studio теперь находится в режиме отладки моментальных снимков.

Snapshot debugging mode

Окно Модули показывает, когда все модули для Службы приложений Azure загружены (выберите Отладка > Windows > Модули, чтобы открыть это окно).

Check the Modules window

Настройка точки моментальных снимков

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

    Set a snappoint

  2. Нажмите кнопку Запустить коллекцию, чтобы включить точку моментальных снимков.

    Turn on the snappoint

    Совет

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

Создание моментального снимка

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

Проверка данных моментальных снимков

  1. Когда точка моментальных снимков срабатывает, в окне Средства диагностики появляется снимок. Чтобы открыть это окно, выберите Отладка > Windows > Показать средства диагностики.

    Open a snappoint

  2. Дважды щелкните точку моментальных снимков, чтобы открыть снимок в редакторе кода.

    Inspect snapshot data

    В этом представлении вы можете навести курсор на переменные для просмотра советов, используя окна Локальные элементы, Контрольные значения и Стек вызовов, а также оценки выражений.

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

Вы можете также добавить дополнительные точки моментальных снимков в приложение и включить их с помощью кнопки Обновить коллекцию.

Нужна помощь? См. статьи Устранение неполадок и известные проблемы для отладки моментальных снимков в Visual Studio и Часто задаваемые вопросы по отладке моментальных снимков в Visual Studio.

Настройка условной точки моментальных снимков

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

Создание условной точки моментальных снимков

  1. Щелкните правой кнопкой мыши значок оснастки (пустой шар) и выберите Параметры.

    Choose Settings

  2. В окне параметров точки моментальных снимков введите выражение.

    Type an expression

    На предыдущей иллюстрации снимок сделан только для точки моментальных снимков при visitor.FirstName == "Dan".

Задание точки ведения журнала

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

Создание точки ведения журнала

  1. Щелкните правой кнопкой мыши значок точки моментальных снимков (синий шестиугольник) и выберите Параметры.

  2. В окне параметров точки моментальных снимков выберите Действия.

    Create a logpoint

  3. В поле Сообщение вы можете ввести новое сообщение журнала, которое хотите зарегистрировать. Вы также можете оценить переменные в сообщении журнала, поместив их в фигурные скобки.

    При выборе Отправить в окно вывода, когда достигнута точка ведения журнала, сообщение будет отображено в окне "Средства диагностики".

    Logpoint data in the Diagnostic Tools window

    При выборе Отправить в журнал приложений, когда будет достигнута точка ведения журнала, сообщение будет отображено в любом месте, из которого вы сможете просмотреть сообщения из System.Diagnostics.Trace (или ILogger в .NET Core), например App Insights.

В этом руководстве вы узнали, как использовать Snapshot Debugger для Azure Kubernetes. Вы можете прочитать дополнительные сведения об этой функции.