IntelliTrace в Visual Studio Enterprise (C#, Visual Basic, C++)

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

  • Записывать определенные события.

  • Просматривать связанный код, данные, отображаемые в окне Локальные во время событий отладчика, и данные вызова функции.

  • Выполнять отладку ошибок, которые трудно воспроизводимы или возникают в развертывании.

IntelliTrace можно использовать в выпуске Visual Studio Enterprise (но не в выпусках Professional или Community).

Что вы хотите сделать?

Сценарий Заголовок
Отладка приложения с помощью IntelliTrace

– Отображение прошлых событий.
– Отображение связанных с прошлыми событиями данных о вызовах.
– Сохранение сеанса IntelliTrace.
– Определение того, какие данные будет собирать IntelliTrace.
- Проверка предыдущих состояний приложения с помощью IntelliTrace
- Пошаговое руководство. Использование IntelliTrace
- Возможности IntelliTrace
- Отладка с ведением журнала
Сбор данных IntelliTrace из развернутых приложений - Использование автономного сборщика данных IntelliTrace
Запуск отладки из файла журнала IntelliTrace (файл .iTrace) - Использование сохраненных данных IntelliTrace

Какие приложения можно выполнить отладку с помощью IntelliTrace?

Уровень поддержки Типы приложений
Полная поддержка – Приложения Visual Basic и Visual C# на платформе .NET Framework 2.0 и более поздних версий.
Можно отлаживать большинство приложений, включая ASP.NET, Microsoft Azure, Windows Forms, WCF, WPF, Windows Workflow, SharePoint 2010, SharePoint 2013 и 64-разрядные приложения.
Сведения об отладке приложений SharePoint с помощью IntelliTrace см. в руководстве по отладке приложения SharePoint с помощью IntelliTrace.
Сведения об отладке приложений Microsoft Azure с помощью IntelliTrace см. в статье Отладка опубликованной облачной службы с помощью IntelliTrace и Visual Studio.
Ограниченная поддержка — Приложения C++, предназначенные для Windows, поддерживают просмотр моментальных снимков с использованием возврата на шаг назад в IntelliTrace. Поддерживаются только события отладчика и исключения.
— Приложения .NET Core и ASP.NET Core поддерживают только некоторые события (контроллер MVC, ADO.NET и события HTTPClient) при локальной отладке. Standalone Collector не поддерживается для приложений .NET Core и ASP.NET Core.
– Приложения F# на экспериментальной основе.
— Для приложений UWP поддерживаются только события.
Не поддерживаются — Другие языки и скрипты.
— Службы Windows, Silverlight, Xbox и приложения Windows Mobile.

Примечание.

Если требуется отладить уже выполняемый процесс, можно собрать только события IntelliTrace (без сведений о вызовах). Присоединиться можно только к 32- или 64-разрядному процессу на локальном компьютере. События, произошедшие до присоединения к процессу, не собираются.

Почему отладка с помощью IntelliTrace?

Традиционная отладка или отладка в реальном времени отображает только текущее состояние приложения с ограниченными данными о прошлых событиях. Необходимо либо сделать вывод об этих событиях на основании текущего состояния приложения, либо создать заново эти события, повторно запустив приложение.

IntelliTrace расширяет эти традиционные возможности отладки, записывая конкретные события и данные в определенные периоды времени. Это позволяет увидеть, что произошло в приложении, не перезапуская его, особенно если место возникновения ошибки было пропущено. IntelliTrace по умолчанию включается во время традиционной отладки и автоматически и незаметно собирает данные. Это позволяет легко переключаться между традиционной отладкой и отладкой с помощью IntelliTrace для просмотра записанной информации. См. статьи Функции IntelliTrace и Какие данные собирает IntelliTrace?

IntelliTrace также может помочь в отладке ошибок, которые трудно воспроизводимы или происходят в развертывании. Можно собирать данные IntelliTrace и сохранять их в файл журнала IntelliTrace (файл .iTrace). Файл .iTrace содержит сведения об исключениях, событиях производительности, запросах через Интернет, тестовых данных, потоках, модулях и другую системную информацию. Можно открыть этот файл в Visual Studio Enterprise, выбрать элемент и начать отладку с помощью IntelliTrace. Это позволяет перейти к любому событию в файле и просматривать конкретные сведения о приложении на этот момент времени.

Можно сохранять данные IntelliTrace из следующих источников:

Ниже приведено несколько примеров того, как IntelliTrace облегчает отладку.

  • Приложение имеет поврежденный файл данных, но вы не знаете, где произошло это событие.

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

  • Происходит исключение.

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

  • В развернутом приложении происходит ошибка или сбой.

    Для приложений на базе Microsoft Azure можно настроить сбор данных IntelliTrace до публикации приложения. Во время работы приложения IntelliTrace сохраняет информацию в ITRACE-файл. См. статью Отладка опубликованной облачной службы с помощью IntelliTrace и Visual Studio.

    Для веб-приложений ASP.NET, размещенных в IIS 7.0, 7.5 и 8.0, и приложений SharePoint 2010 и SharePoint 2013 используйте Microsoft Monitoring Agent либо отдельно, либо вместе с System Center 2012 для сохранения данных IntelliTrace в ITRACE-файл.

    Этот метод полезен при диагностике проблем с приложениями в развертывании. См. статью Использование автономного сборщика данных IntelliTrace.

Какие данные собираютСя IntelliTrace?

Сбор сведений о событиях

По умолчанию IntelliTrace записывает только события IntelliTrace — события отладчика, исключения, события .NET Framework и другие системные события, которые помогут вам в процессе отладки. Можно выбрать типы событий IntelliTrace, которые необходимо собирать, за исключением событий отладчика и исключений, которые собираются всегда. См. статью Возможности IntelliTrace.

  • События отладчика

    IntelliTrace всегда записывает события, которые происходят в отладчике Visual Studio. Например, запуск приложения — это событие отладчика. Другие события отладчика — события остановки, заставляющие приложение прервать исполнение. Например, программа достигает точки останова, точки трассировки или выполняет команду Шаг.

    Во избежание проблем с производительностью IntelliTrace по умолчанию не записывает все возможные значения события отладчика. а только следующие:

    • Значения в окне Локальные. Оставьте окно Локальные открытым, чтобы видеть эти значения.

    • Значения в поле Видимые, если окно Видимые открыто.

    • Значения в советах DataTips, отображаемые при наведении указателя мыши на переменную в окне исходного кода для просмотра ее значения. IntelliTrace не собирает значения в закрепленных советах DataTips.

      Если включен режим событий и моментальных снимков IntelliTrace, IntelliTrace создает моментальный снимок процесса приложения при каждом событии отладчика Точка останова и Шаг. При этом записываются значения в окнах Локальные параметры, Видимые и Контрольные значения вне зависимости от того, открыты ли эти окна. Кроме того, собираются значения из всех подсказок данных.

  • Исключения

    IntelliTrace записывает тип исключения и сообщение для:

    • обработанных исключений, если исключение создано и перехвачено;

    • необработанных исключений.

  • События .NET Framework

    По умолчанию IntelliTrace записывает наиболее распространенные события .NET Framework. Например, для события CheckBox.CheckedChanged IntelliTrace собирает состояние и текст флажка.

  • События приложений SharePoint 2010 и SharePoint 2013

    Можно записать события профиля пользователя и подмножество событий унифицированной системы ведения журнала (ULS) для приложений SharePoint 2010 и 2013, выполняемых вне Visual Studio. Можно сохранить эти события в ITRACE-файле. Для этого требуется выполнение Visual Studio Enterprise 2015 или более поздней версии, предыдущей версии Visual Studio Ultimate или Microsoft Monitoring Agent в режиме трассировки.

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

    См.

Запись моментальных снимков

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

Примечание.

Автономный сборщик IntelliTrace не поддерживает запись моментальных снимков.

См. запись Проверка предыдущих состояний приложения с помощью IntelliTrace.

Сбор сведений о вызовах функций

Можно настроить IntelliTrace для сбора сведений о вызовах для функций. Эти сведения позволяют просмотреть историю стека вызовов и перемещаться по вызовам в коде вперед и назад. Для каждого вызова функции IntelliTrace записывает следующие данные.

  • Имя функции
  • Значения простых типов данных, переданные в качестве параметров в точках входа функции и возвращаемые в точках выхода функции.
  • Значения автоматических свойств при их чтении или изменении.
  • Указатели на дочерние объекты первого уровня без их значений (только информацию о том, являются ли они null или нет).

Примечание.

IntelliTrace собирает только первые 256 объектов в массивах и первые 256 символов в строках.

См. раздел Проверка приложения с помощью исторической отладки.

Сбор сведений о модулях

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

Замедлит ли IntelliTrace мое приложение?

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

Сбор сведений о вызовах может значительно замедлить выполнение приложения. Кроме того, вследствие сбора сведений может увеличиться размер файлов журнала IntelliTrace (ITRACE-файлов), которые сохраняются на диск. Чтобы свести к минимуму указанные эффекты, собирайте информацию о вызовах только в важных для вас модулях. Чтобы изменить максимальный размер ITRACE-файлов, последовательно выберите Сервис, Параметры, IntelliTrace, Дополнительно.

Блоги

Microsoft DevOps

Форумы

Visual Studio Diagnostics