Устранение неполадок и известных проблем с отладкой snapshot в Visual Studio

Применимо к: Visual Studio

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

Если описанные в этой статье действия не помогли устранить проблему, найдите проблему на Сообщество разработчиков или сообщите о новой проблеме, выбрав Справка>отправить отзыв>о проблеме в Visual Studio.

Проблема: при подключении отладчика моментальных снимков возникает ошибка кода состояния HTTP

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

[TIMESTAMP] Error --- Unable to Start Snapshot Debugger - Attach Snapshot Debugger failed: System.Net.WebException: The remote server returned an error: (###) XXXXXX

(401) Не авторизовано

Эта ошибка указывает на то, что вызов REST, выполняемый Visual Studio в Azure, использует недопустимые учетные данные.

Выполните следующие действия.

  • Убедитесь, что учетная запись персонализации Visual Studio имеет разрешения для подписки и ресурса Azure, к которым вы подключаетесь. Быстрый способ определить это — проверка, доступен ли ресурс в диалоговом окнеотладчик подключения моментальных снимков отладки...>>Ресурс> AzureВыберите Существующий или в разделе Облачные Обозреватель.
  • Если эта ошибка продолжает сохраняться, используйте один из каналов обратной связи, описанных в начале этой статьи.

Если вы включили проверку подлинности и авторизацию (EasyAuth) на Служба приложений, может возникнуть ошибка 401 с launchAgentAsync в сообщении об ошибке стека вызовов. Убедитесь, что действие, выполняемое при отсутствии проверки подлинности запроса, имеет значение Разрешить анонимные запросы (без действия) в портал Azure и предоставьте authorization.json в D:\Home\sites\wwwroot со следующим содержимым.

{
  "routes": [
    {
      "path_prefix": "/",
      "policies": {
        "unauthenticated_action": "RedirectToLoginPage"
      }
    },
    {
      "http_methods": [ "POST" ],
      "path_prefix": "/41C07CED-2E08-4609-9D9F-882468261608/api/agent",
      "policies": {
        "unauthenticated_action": "AllowAnonymous"
      }
    }
  ]
}

Первый маршрут эффективно защищает домен приложения, как вход с помощью [IdentityProvider]. Второй маршрут предоставляет конечную точку SnapshotDebugger AgentLaunch вне проверки подлинности, которая выполняет предопределенное действие запуска агента диагностики SnapshotDebugger только в том случае, если для службы приложений включено предварительно установленное расширение сайта SnapshotDebugger. Дополнительные сведения о конфигурации authorization.json см. в разделе Правила авторизации URL-адресов.

(403) Запрещено

Ошибка 403 — запрещено указывает, что разрешение отказано. Эта ошибка может быть вызвана многими различными сценариями.

Выполните следующие действия.

  • Убедитесь, что учетная запись Visual Studio имеет действительную подписку Azure с необходимыми разрешениями Role-Based контроль доступа (RBAC) для ресурса. Для AppService проверка, если у вас есть разрешения на запрос плана Служба приложений, в котором размещается приложение.
  • Убедитесь, что метка времени клиентского компьютера является правильной и актуальной. Серверы с метками времени, отключенными более чем на 15 минут от метки времени запроса, обычно создают эту ошибку.
  • Если эта ошибка продолжает сохраняться, используйте один из каналов обратной связи, описанных в начале этой статьи.

(404) Не найдено

Ошибка 404 — не найдена означает, что веб-сайт не удалось найти на сервере.

Выполните следующие действия.

  • Убедитесь, что на ресурсе Служба приложений, к которому вы подключаетесь, развернут и запущен веб-сайт.
  • Убедитесь, что сайт доступен по адресу https://< resource.azurewebsites.net>
  • Убедитесь, что правильно работающее пользовательское веб-приложение не возвращает код состояния 404 при доступе к https://< resource.azurewebsites.net>.
  • Если эта ошибка продолжает сохраняться, используйте один из каналов обратной связи, описанных в начале этой статьи.

(406) Недопустимо

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

Выполните следующие действия.

  • Убедитесь, что сайт доступен по адресу https://< resource.azurewebsites.net>.
  • Убедитесь, что сайт не был перенесен на новые экземпляры. Отладчик моментальных снимков использует понятие ARRAffinity для маршрутизации запросов к определенным экземплярам, которые могут периодически вызывать эту ошибку.
  • Если эта ошибка продолжает сохраняться, используйте один из каналов обратной связи, описанных в начале этой статьи.

(409) Конфликт

Ошибка 409 — конфликт указывает, что запрос конфликтует с текущим состоянием сервера.

Это известная проблема, которая возникает, когда пользователь пытается подключить отладчик моментальных снимков к Службе AppService, включив ApplicationInsights. ApplicationInsights задает appSettings с регистром, отличным от Visual Studio, что вызывает эту проблему.

Мы устранили эту проблему в Visual Studio 2019.

Выполните следующие действия.

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

(500) Внутренняя ошибка сервера

Ошибка 500 — внутренняя ошибка сервера указывает, что сайт не работает или сервер не может обработать запрос. Отладчик моментальных снимков работает только в запущенных приложениях. Отладчик моментальных снимков Application Insights обеспечивает создание моментальных снимков для исключений и может быть лучшим средством для ваших потребностей.

(502) Недопустимый шлюз

Ошибка 502 — недопустимый шлюз указывает на проблему с сетью на стороне сервера и может быть временной.

Выполните следующие действия.

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

Проблема: Snappoint не включен

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

Снимок экрана, на котором показано, что Snappoint не включается.

Выполните следующие действия.

  • Убедитесь, что для сборки и развертывания приложения используется та же версия исходного кода.
  • Убедитесь, что вы загружаете правильные символы для развертывания.
  • Для этого просмотрите окно Модули во время отладки моментальных снимков и убедитесь, что в столбце Файл символов отображается PDB-файл , загруженный для отлаживаемого модуля.
    • Отладчик моментальных снимков попытается автоматически скачать и использовать символы для развертывания.

Проблема: символы не загружаются при открытии моментального снимка

Если отображается следующее окно, символы не загружались.

Снимок экрана: символы не загружаются.

Выполните следующие действия.

  • Выберите Изменить параметры символов... на странице.

  • В параметрах Отладка > символов добавьте каталог кэша символов.

  • Перезапустите snapshot отладку после установки пути к символам.

    Символы или PDB-файлы, доступные в проекте, должны соответствовать Служба приложений развертывании. Большинство развертываний (развертывание с помощью Visual Studio, CI/CD с помощью Azure Pipelines или Kudu и т. д.) публикуют файлы символов вместе с Служба приложений. Установка каталога кэша символов позволяет Visual Studio использовать эти символы.

    Снимок экрана: параметры для символов.

  • Кроме того, если ваша организация использует сервер символов или удаляет символы по другому пути, используйте параметры символов, чтобы загрузить правильные символы для развертывания.

Проблема. Не отображается параметр "Присоединить отладчик моментального снимка" в облачной Обозреватель

Выполните следующие действия.

  • Убедитесь, что компонент Отладчик моментальных снимков установлен. Откройте Visual Studio Installer и проверка компонент отладчика моментальных снимков в рабочей нагрузке Azure.

  • Для Visual Studio 2019 или более поздних версий убедитесь, что ваше приложение поддерживается:

    • службы приложение Azure — ASP.NET приложения, работающие в платформа .NET Framework 4.6.1 или более поздней версии.
    • службы приложение Azure — ASP.NET Core приложения, работающие в .NET Core 2.0 или более поздней версии в Windows.
    • Azure Виртуальные машины (и масштабируемый набор виртуальных машин) — ASP.NET приложения, работающие в платформа .NET Framework 4.6.1 или более поздней версии.
    • Azure Виртуальные машины (и масштабируемый набор виртуальных машин) — ASP.NET Core приложения, работающие в .NET Core 2.0 или более поздней версии в Windows.
    • Службы Azure Kubernetes — ASP.NET Core приложения, работающие в .NET Core 2.2 или более поздней версии в Debian 9.
    • Службы Azure Kubernetes — ASP.NET Core приложения, работающие в .NET Core 2.2 или более поздней версии в Alpine 3.8.
    • Службы Azure Kubernetes — ASP.NET Core приложения, работающие в .NET Core 2.2 или более поздней версии в Ubuntu 18.04.

Проблема. Я вижу только регулируемые моментальные снимки в средствах диагностики

Снимок экрана, на котором показана отрегулблаемая точка привязки.

Выполните следующие действия.

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

Проблема. Отладка моментальных снимков с несколькими версиями Visual Studio приводит к ошибкам (Visual Studio 2019 или более поздних версий)

Для Visual Studio 2019 требуется более новая версия расширения сайта отладчика моментальных снимков на Служба приложений Azure. Эта версия несовместима с более старой версией расширения сайта отладчика моментальных снимков, используемого Visual Studio 2017. При попытке присоединить отладчик моментальных снимков в Visual Studio 2019 к Служба приложений Azure, ранее отлаживаемой отладчиком моментальных снимков в Visual Studio 2017, вы получите следующую ошибку:

Снимок экрана: несовместимое расширение сайта отладчика моментальных снимков Visual Studio 2019.

И наоборот, если вы используете Visual Studio 2017 для присоединения отладчика моментальных снимков к Служба приложений Azure, который ранее был отлажен с помощью отладчика моментальных снимков в Visual Studio 2019, вы получите следующую ошибку:

Снимок экрана: несовместимое расширение сайта отладчика моментальных снимков Visual Studio 2017.

Чтобы устранить эту проблему, удалите следующие параметры приложения в портал Azure и снова подключите отладчик моментальных снимков:

  • INSTRUMENTATIONENGINE_EXTENSION_VERSION
  • SNAPSHOTDEBUGGER_EXTENSION_VERSION

Проблема. Я присоединяюсь к неправильному или старому ресурсу Или учетной записи хранения Azure

Выполните следующие действия.

В записях "Ресурс Azure" и "Учетная запись хранения" имена ресурсов используются в качестве ключей, поэтому такие действия, как перенос ресурса в разные подписки, могут вызвать проблемы. Чтобы очистить список, выполните следующие действия.

  1. Выполните эти команды в командной строке разработчика для VS (с правами администратора).

    vsregedit remove local HKCU SnapshotDebugger AzureResourcesMRU
    vsregedit remove local HKCU SnapshotDebugger StorageAccountsMRU
    
  2. Удалите все SUO-файлы, связанные с веб-приложением.

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

Включение журналов агента

Чтобы включить и отключить ведение журнала агентов, откройте Visual Studio и перейдите в раздел Сервис>Параметры>Моментальный снимок Отладчик>Включить ведение журнала агента. Обратите внимание, что если также включен параметр Удаление старых журналов агента при запуске сеанса , при каждом успешном подключении Visual Studio будут удалены предыдущие журналы агента.

Журналы агентов можно найти в следующих расположениях:

  • Службы приложений:
    • Перейдите на сайт Kudu Служба приложений (то есть <ваша служба приложений>).scm.azurewebsites.net) и перейдите в консоль отладки.
    • Журналы агента хранятся в следующем каталоге: D:\home\LogFiles\SiteExtensions\DiagnosticsAgentLogs\.
  • VM/VMSS:
    • Войдите в виртуальную машину, журналы агента хранятся следующим образом: C:\WindowsAzure\Logs\Plugins\Microsoft.Azure.Diagnostics.IaaSDiagnostics<Version>\SnapshotDebuggerAgent*.txt_
  • АКС
    • Перейдите в следующий каталог: /tmp/diag/AgentLogs/*

Включение журналов профилировщика и инструментирования

Журналы инструментирования можно найти в следующих расположениях:

  • Службы приложений:
    • Журнал ошибок автоматически отправляется вD:\Home\LogFiles\eventlog.xml, события помечаются или <Provider Name="Instrumentation Engine" /> "Производственные точки останова"
  • VM/VMSS:
    • Войдите в виртуальную машину и откройте Просмотр событий.
    • Откройте следующее представление: Приложение журналов>Windows.
    • Фильтрация текущего журнала по источнику событий с помощью рабочих точек останова или подсистемы инструментирования.
  • АКС
    • Ведение журнала механизма инструментирования в /tmp/diag/log.txt (задано MicrosoftInstrumentationEngine_FileLogPath в DockerFile)
    • Ведение журнала ProductionBreakpoint в /tmp/diag/shLog.txt

Известные проблемы

  • Отладка моментальных снимков с несколькими клиентами Visual Studio для одного и того же Служба приложений в настоящее время не поддерживается.
  • Оптимизация Roslyn IL не полностью поддерживается в ASP.NET Core проектах. Для некоторых проектов ASP.NET Core могут не отображаться некоторые переменные или использовать некоторые переменные в условных инструкциях.
  • Специальные переменные, такие как $FUNCTION или $CALLER, не могут оцениваться в условных инструкциях или точках журнала для проектов ASP.NET Core.
  • Отладка моментальных снимков не работает в службах приложений, для которых включено локальное кэширование .
  • Приложения API отладки моментальных снимков в настоящее время не поддерживаются.

Обновление расширения сайта

Отладка моментальных снимков и Application Insights зависят от ICorProfiler, который загружается в процесс сайта и вызывает проблемы с блокировкой файлов во время обновления. Мы рекомендуем этот процесс, чтобы обеспечить отсутствие простоя на рабочем сайте.

  • Создайте слот развертывания в Служба приложений и разверните сайт в слоте.
  • Замените слот рабочей средой из облачной Обозреватель в Visual Studio или с портал Azure.
  • Остановите сайт слота. Для отключения процесса сайтаw3wp.exe всех экземпляров требуется несколько секунд.
  • Обновите расширение сайта слота с сайта Kudu или портал Azure (обновление расширений средств > разработки Служба приложений колонки >>).
  • Запустите сайт слота. Мы рекомендуем посетить сайт, чтобы разогреть его снова.
  • Замените слот рабочей средой.

Ссылки