Устранение неполадок и известные проблемы отладки моментальных снимков в 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 и ресурс, к которому вы подключаетесь. Быстро определить это можно путем проверки доступности ресурса, выбрав в диалоговом окне пункт Отладка>Подключить Snapshot Debugger…>Ресурс Azure>Выбрать существующий, или в Cloud Explorer.
- Если ошибка сохраняется, используйте один из каналов обратной связи, указанных в начале этой статьи.
Если в вашей службе приложений подключены проверка подлинности и авторизация (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]. Второй маршрут предоставляет конечную точку AgentLaunch для SnapshotDebugger за рамками проверки подлинности, которая выполняет предварительно заданное действие, запуская агент диагностики SnapshotDebugger только в том случае, если для вашей службы приложений включено предварительно установленное расширение сайта SnapshotDebugger. Дополнительные сведения о конфигурации authorization.json см. в правилах авторизации URL-адресов.
(403) Запрещено
Ошибка 403 — запрещено, указывает, что разрешение запрещено. Многие различные сценарии могут вызвать эту ошибку.
Выполните следующие действия:
- Убедитесь в том, что у вашей учетной записи Visual Studio есть допустимая подписка Azure с необходимыми для ресурса разрешениями управления доступом на основе ролей (RBAC). Для AppService проверьте наличие разрешений на запрос плана Службы приложений, в котором размещается приложение.
- Проверьте правильность и актуальность метки времени на клиентском компьютере. Эта ошибка обычно возникает на серверах с метками времени, которые более чем на 15 минут отличаются от метки времени в запросе.
- Если ошибка сохраняется, используйте один из каналов обратной связи, указанных в начале этой статьи.
(404) Не найдено
Ошибка 404 — не найдена, указывает, что веб-сайт не найден на сервере.
Выполните следующие действия:
- Убедитесь в том, что в ресурсе Службы приложений, к которому вы подключаетесь, развернут и работает веб-сайт.
- Убедитесь, что сайт доступен по адресу https://< resource.azurewebsites.net>
- Убедитесь, что ваше пользовательское веб-приложение не возвращает код состояния 404 при доступе по адресу https://< resource.azurewebsites.net>.
- Если ошибка сохраняется, используйте один из каналов обратной связи, указанных в начале этой статьи.
(406) Недопустимо
Ошибка 406 — не приемлемая ошибка указывает, что сервер не может ответить на тип, заданный в заголовке Accept запроса.
Выполните следующие действия:
- Убедитесь, что сайт доступен по адресу https://< resource.azurewebsites.net>.
- Убедитесь, что сайт не был перенесен на новые экземпляры. Отладчик моментальных снимков использует понятие ARRAffinity для маршрутизации запросов к определенным экземплярам, которые могут периодически вызывать эту ошибку.
- Если ошибка сохраняется, используйте один из каналов обратной связи, указанных в начале этой статьи.
(409) Конфликт
Ошибка конфликта 409 указывает, что запрос конфликтует с текущим состоянием сервера.
Это известная проблема, возникающая, когда пользователь пытается присоединить Snapshot Debugger к AppService с включенной службой Application Insights. Application Insights задает для AppSettings регистр, отличный от используемого в Visual Studio, что приводит к возникновению этой проблемы.
Мы разрешили эту проблему в Visual Studio 2019.
Выполните следующие действия:
- Если ошибка сохраняется, используйте один из каналов обратной связи, указанных в начале этой статьи.
(500) Внутренняя ошибка сервера
Ошибка внутреннего сервера 500 означает, что сайт не работает или сервер не может обрабатывать запрос. Snapshot Debugger работает только в выполняющихся приложениях. Application Insights Snapshot Debugger обеспечивает создание моментальных снимков при возникновении исключений и может быть более подходящим средством.
(502) Недопустимый шлюз
Ошибка 502 — недопустимый шлюз указывает на проблему сети на стороне сервера и может быть временной.
Выполните следующие действия:
- Попробуйте подождать несколько минут, прежде чем снова присоединять Snapshot Debugger.
- Если ошибка сохраняется, используйте один из каналов обратной связи, указанных в начале этой статьи.
Проблема. Snappoint не включена
Если вы видите значок предупреждения с точкой привязки вместо обычного значка оснастки, то точка привязки не включена.
Выполните следующие действия:
- Убедитесь, что для сборки и развертывания приложения используется та же версия исходного кода.
- Убедитесь, что вы загружаете правильные символы для развертывания.
- Для этого просмотрите окно модулей во время отладки моментального снимка и проверьте, что столбец файла символов отображает PDB-файл , загруженный для модуля, который выполняется отладка.
- Snapshot Debugger попытается загрузить и использовать символы для вашего развертывания автоматически.
Проблема. Символы не загружаются при открытии моментального снимка
Если отображается следующее окно, символы не загружались.
Выполните следующие действия:
Выберите "Изменить параметры символов" на странице.
В параметрах Отладка > Символ добавьте каталог кэша символов.
Перезапустите отладку моментального снимка после задания пути к символам.
Символы или PDB-файлы, доступные в проекте, должны соответствовать Служба приложений развертыванию. Большинство развертываний (развертывание с помощью Visual Studio, CI/CD с помощью Azure Pipelines или Kudu и т. д.) публикуют файлы символов вместе с Служба приложений. Установка каталога кэша символов позволяет Visual Studio использовать эти символы.
В качестве альтернативы, если организация использует сервер символов или удаляет символы в другом пути, используйте параметры символов, чтобы загрузить правильные символы для своего развертывания.
Проблема. Не удается увидеть параметр "Подключить отладчик моментальных снимков" в Cloud Explorer
Выполните следующие действия:
Убедитесь, что компонент Snapshot Debugger установлен. Откройте Visual Studio Installer и проверьте компонент Snapshot Debugger в рабочей нагрузке 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, выполняющиеся на платформе .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.
Проблема: в Средствах диагностики отображаются только регулируемые моментальные снимки
Выполните следующие действия:
- Моментальные снимки занимают мало памяти, но для них выделяется фиксированное количество памяти. Если Snapshot Debugger обнаружит, что ваш сервер находится под большой нагрузкой памяти, он не будет делать снимки. Вы можете удалить уже полученные снимки, остановив сеанс Snapshot Debugger и повторив попытку.
Проблема. Отладка моментальных снимков с несколькими версиями Visual Studio дает мне ошибки (Visual Studio 2019 или более поздней версии)
Для Visual Studio 2019 необходима более новая версия расширения сайта Snapshot Debugger в Службе приложений Azure. Эта версия несовместима с более старой версией расширения сайта отладчика моментальных снимков, используемого Visual Studio 2017. При попытке подключить отладчик моментальных снимков в Visual Studio 2019 к службе приложение Azure, которая ранее была отлаживаема отладчиком моментальных снимков в Visual Studio 2017, появится следующая ошибка:
И наоборот, если вы используете Visual Studio 2017 для подключения отладчика моментальных снимков к службе приложение Azure, которая ранее была отлажена отладчиком моментальных снимков в Visual Studio 2019, вы получите следующую ошибку:
Чтобы устранить эту проблему, удалите следующие параметры приложения на портале Azure и подключите Snapshot Debugger повторно.
INSTRUMENTATIONENGINE_EXTENSION_VERSION
SNAPSHOTDEBUGGER_EXTENSION_VERSION
Проблема. Я присоединяюсь к неправильному или старому ресурсу Azure или учетной записи хранения
Выполните следующие действия:
Записи ресурса Azure и учетной записи службы хранилища используют имена ресурсов в качестве ключей, чтобы такие действия, как перенос ресурса в разные подписки, могли вызвать проблемы. Чтобы очистить список, выполните действия ниже.
Выполните эти команды в командной строке разработчика для VS (с правами администратора).
vsregedit remove local HKCU SnapshotDebugger AzureResourcesMRU vsregedit remove local HKCU SnapshotDebugger StorageAccountsMRU
Удалите все файлы SUO , связанные с веб-приложением.
Проблема. У меня возникли проблемы с отладкой моментальных снимков, и мне нужно включить больше ведения журнала.
Включение журналов агента
Чтобы включить и отключить ведение журнала агентов, откройте Visual Studio и перейдите к разделу "Параметры>моментального снимка отладчика>моментальных снимков">, чтобы включить ведение журнала агента. Обратите внимание, что при включении удаления старых журналов агента при запуске сеанса каждое успешное присоединение Visual Studio удаляет предыдущие журналы агента.
Журналы агента можно найти в следующих расположениях:
- Служба приложений:
- Перейдите на сайт Kudu Служба приложений (то есть <yourappservice).>scm.azurewebsites.net) и перейдите в консоль отладки.
- Журналы агента хранятся в следующем каталоге: D:\home\LogFiles\SiteExtensions\DiagnosticsAgentLogs\.
- Vm/VMSSs:
- Войдите на виртуальную машину, журналы агентов хранятся следующим образом: C:\WindowsAzure\Logs\Plugins\Microsoft.Azure.Diagnostics.IaaSDiagnostics<Version>\SnapshotDebuggerAgent*.txt_
- AKS
- Перейдите к следующему каталогу: /tmp/diag/AgentLogs/*
Включение журналов профилировщика и инструментирования
Журналы инструментирования можно найти в следующих расположениях:
- Служба приложений:
- Ведение журнала ошибок автоматически отправляется в D:\Home\LogFiles\eventlog.xml, события помечены как
<Provider Name="Instrumentation Engine" />
"Рабочие точки останова".
- Ведение журнала ошибок автоматически отправляется в D:\Home\LogFiles\eventlog.xml, события помечены как
- Vm/VMSSs:
- Войдите на виртуальную машину и откройте "Просмотр событий".
- Откройте следующее представление: Журналы Windows > Приложение.
- Отфильтруйте текущий журнал по источнику события, используя производственные точки останова или ядро инструментирования.
- AKS
- Ведение журнала подсистемы инструментирования в /tmp/diag/log.txt (задано
MicrosoftInstrumentationEngine_FileLogPath
в DockerFile) - Ведение журнала ProductionBreakpoint по адресу /tmp/diag/shLog.txt
- Ведение журнала подсистемы инструментирования в /tmp/diag/log.txt (задано
Известные проблемы
- Отладка моментальных снимков с несколькими клиентами Visual Studio с одной и той же Служба приложений в настоящее время не поддерживается.
- Оптимизация Roslyn IL не полностью поддерживается в проектах ASP.NET Core. В некоторых проектах ASP.NET Core вы не сможете увидеть некоторые переменные или использовать их в условных выражениях.
- Специальные переменные, такие как
$FUNCTION
или$CALLER
, нельзя оценивать в условных инструкциях или точках журнала для проектов ASP.NET Core. - Отладка моментальных снимков не работает на Служба приложений с включенным локальным кэшированием.
- Приложения API отладки моментальных снимков в настоящее время не поддерживаются.
Обновление расширения сайта
Отладка моментальных снимков и Application Insights зависит от ICorProfiler, который загружается в процесс сайта и вызывает проблемы, состоящие в блокировке файлов во время обновления. Мы рекомендуем этот процесс, чтобы гарантировать отсутствие времени простоя на рабочем сайте.
- Создайте слот развертывания в Службе приложений и разверните свой сайт в слоте.
- Переключите слот с рабочей средой из Cloud Explorer в Visual Studio или с портала Azure.
- Остановите сайт слота. Для отключения процесса w3wp.exe сайта от всех экземпляров требуется несколько секунд.
- Обновите расширение сайта для слота с сайта Kudu или портала Azure (в колонке Служба приложений > Инструменты разработчика > Расширения Обновление>).
- Запустите сайт слота. Мы рекомендуем посетить сайт, чтобы снова его подготовить.
- Переключите слот с рабочей средой.
Ссылки
- Отладка в Visual Studio
- Отладка работающих приложений ASP.NET Azure с помощью Snapshot Debugger
- Отладка работающих приложений ASP.NET на Виртуальных машинах Azure и в Масштабируемых наборах виртуальных машин Azure с помощью Snapshot Debugger
- Отладка работающей службы Azure Kubernetes ASP.NET с помощью Snapshot Debugger
- Ответы на часто задаваемые вопросы по отладке моментальных снимков