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


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

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

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

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

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

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

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

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

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

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

    Примечание.

    В Visual Studio Enterprise под управлением 32-разрядной версии Windows просмотр моментальных снимков недоступен.

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

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

    Важно!

    Для отладки моментальных снимков необходимо открыть ту же версию исходного кода, которая опубликована в службе "Виртуальные машины Azure" или "Масштабируемые наборы виртуальных машин Azure" (VMSS).

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

    Launch the snapshot debugger from the Debug menu

    Select Azure Resource

    Важно!

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

    Примечание.

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

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

    Snapshot debugging mode

    Примечание.

    Для работы с Масштабируемыми наборами виртуальных машин пользователь должен вручную обновить экземпляры в своем VMSS при первом подключении Snapshot Debugger.

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

    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 и для Масштабируемых наборов виртуальных машин Azure. Вы можете прочитать дополнительные сведения об этой функции.