Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
При включении Snapshot Debugger автоматически собирает снимок исходного кода и переменных при возникновении исключения в работающем .NET приложении. Отладчик моментальных снимков в Application Insights:
- отслеживает системные журналы, созданные веб-приложением;
- собирает моментальные снимки для наиболее часто выбрасываемых исключений;
- предоставляет сведения, необходимые для диагностики проблем с рабочей средой.
Поддерживаемые приложения и среды
Приложения
Коллекция моментальных снимков доступна для:
- .NET Framework 4.6.2 и более поздних версий.
- .NET 6.0 или более поздней версии в Windows.
Окружающая среда
Поддерживаются следующие среды:
- Служба приложений Azure
- Функции Azure
- Azure Cloud Services под управлением семейства ОС 4 или более поздней версии
- Azure Service Fabric работает на Windows Server 2012 R2 или более поздней версии
- Azure Virtual Machines и Azure Virtual Machine Scale Sets, работающие под управлением Windows Server 2012 R2 или более поздней версии
- Локальные виртуальные или физические машины под управлением Windows Server 2012 R2 или более поздней версии или Windows 8.1 или более поздней версии.
Примечание.
Клиентские приложения, такие как WPF, Windows Forms или UWP, не поддерживаются.
Предварительные требования для использования отладчика моментальных снимков
Пакеты и конфигурации
- Включите пакет NuGet сборщика моментальных снимков в приложение.
- Настройте параметры коллекции в
ApplicationInsights.config.
Разрешения
- Убедитесь, что вы добавлены в роль отладчика моментальных снимков Application Insights для целевого Моментального снимка в Application Insights.
Как работает отладчик моментальных снимков
Отладчик моментальных снимков реализуется как телеметрический обработчик Application Insights. При запуске вашего приложения обработчик телеметрии отладчика моментальных снимков добавляется в конвейер системно-сгенерированных журналов приложения.
Внимание
Моментальные снимки могут содержать персональные данные или другую конфиденциальную информацию в значениях переменных и параметров. Данные моментальных снимков хранятся в том же регионе, что и ресурс Application Insights.
Процесс отладчика моментальных снимков
Процесс отладки с помощью моментальных снимков начинается и завершается методом TrackException. Снимок процесса — это приостановленный клон запущенного процесса. Ваши пользователи испытывают минимальные или вовсе отсутствующие прерывания. В типичном сценарии:
Исключение создается в приложении и передается в Application Insights путем вызова
TrackExceptionметода.Отладчик моментальных снимков отслеживает исключения в момент их возникновения, подписываясь на событие
AppDomain.CurrentDomain.FirstChanceException.Счетчик увеличивается для идентификатора задачи.
Когда счетчик достигает
ThresholdForSnapshottingзначения, идентификатор проблемы добавляется в план сбора.Примечание.
Минимальное
ThresholdForSnapshottingзначение по умолчанию — 1. С этим значением ваше приложение должно вызвать такое же исключение дважды перед созданием моментального снимка.Идентификатор проблемы события исключения вычисляется и сравнивается с идентификаторами проблем в плане сбора данных.
Если между идентификаторами проблем происходит совпадение, создается снимок выполняемого процесса.
Моментальному снимку назначается уникальный идентификатор, и к исключению добавляется метка с этим идентификатором.
Примечание.
Частота создания моментальных снимков ограничивается параметром
SnapshotsPerTenMinutesLimit. По умолчанию ограничение составляет один моментальный снимок каждые 10 минут.После возвращения обработчика
FirstChanceException, выброшенное исключение обрабатывается в обычном режиме.Исключение снова достигает метода
TrackExceptionи отправляется в Application Insights вместе с идентификатором моментального снимка.
Примечание.
Установите для параметра IsEnabledInDeveloperMode значение true, если вы хотите создать моментальные снимки во время отладки в Visual Studio.
Процесс загрузки снимков
Хотя процесс отладчика моментальных снимков продолжает выполняться и обрабатывать трафик пользователей с небольшим прерыванием, моментальный снимок передается на обработку процессу загрузки моментальных снимков. В обычной ситуации загрузчик моментальных снимков:
Создает минидамп.
Отправляет мини-dump в Application Insights вместе с любыми соответствующими файлами символов (PDB).
Примечание.
Не более 50 моментальных снимков в день можно отправлять.
Если вы включили отладчик моментальных снимков, но не видите их, обратитесь к руководству по устранению неполадок.
Обновление отладчика моментальных снимков
Автоматическое обновление отладчика моментальных снимков с помощью встроенного предустановленного расширения сайта Application Insights.
Добавление вручную расширения сайта Application Insights для поддержания в актуальном состоянии отладчика моментальных снимков больше не рекомендуется.
Накладные расходы
Отладчик моментальных снимков предназначен для использования в рабочих средах. Параметры по умолчанию включают ограничения скорости, чтобы свести к минимуму влияние на приложения.
Однако вы можете столкнуться с небольшими затратами на ЦП, память и операции ввода-вывода, связанные с отладчиком снимков.
- При возникновении исключения в приложении
- Если обработчик исключений решит создать моментальный снимок
- Когда вызывается
TrackException
Нет дополнительных затрат на хранение данных, захваченных отладчиком моментальных снимков.
См. примеры сценариев, в которых вы можете столкнуться с нагрузкой отладчика моментальных снимков.
Оптимизация кода
Если моментальные снимки собираются из вашего приложения, в консолидированном обзоре оптимизации кода может содержаться информация об исключениях.
Ограничения
В этом разделе рассматриваются ограничения для отладчика моментальных снимков.
Хранение данных
Моментальные снимки отладки хранятся в течение 15 дней. Политика хранения по умолчанию задается для каждого приложения отдельно. Если необходимо увеличить это значение, можно запросить увеличение, открыв вариант поддержки в Azure portal. Для каждого экземпляра Application Insights разрешено максимум 50 моментальных снимков в день.
Публикация символов
Отладчик моментальных снимков требует файлов символов на рабочем сервере:
- Декодирование переменных
- Предоставление возможности отладки в Visual Studio
По умолчанию Visual Studio 2017 версии 15.2 или более поздней публикует символы для сборок выпуска при публикации в Службе приложений.
В предыдущих версиях необходимо добавить следующую строку в файл профиля
.pubxmlпубликации, чтобы символы были опубликованы в режиме релиза.<ExcludeGeneratedDebugSymbol>False</ExcludeGeneratedDebugSymbol>Для Azure Compute и других типов убедитесь, что файлы символов находятся в одном из следующих состояний:
- В той же папке основного приложения
.dll(как правило,wwwroot/bin) или - Доступно по текущему пути.
Дополнительные сведения о различных доступных параметрах символов см. в документации Visual Studio. Для получения наилучших результатов рекомендуется использовать полный, переносимый или внедренный.
Оптимизированные сборки
В некоторых случаях локальные переменные нельзя просматривать в сборках выпуска из-за оптимизации, примененной компилятором JIT.
Однако в App Service отладчик моментальных снимков может деоптимизировать методы создания, которые являются частью плана сбора.
Совет
Установите расширение сайта Application Insights в экземпляре App Service, чтобы получить поддержку деоптимизации.
Связанный контент
Включите отладчик моментальных снимков Application Insights для приложения: