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


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

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

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

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

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

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

Здесь показано, как запись событий может облегчить поиск ошибок в коде:

Только события IntelliTrace — поток верхнего уровня

Выберите действие

Отладка приложения с помощью IntelliTrace в Visual Studio:

  • Отображение прошлых событий.

  • Отображение связанных с прошлыми событиями данных о вызовах.

  • Сохранение сеанса IntelliTrace.

  • Определение того, какие данные будет собирать IntelliTrace.

Сбор данных IntelliTrace во время тестового сеанса в Test Manager

Сбор данных IntelliTrace из приложений в развертывании

Запуск отладки из файла журнала IntelliTrace (файл .iTrace).

Часто задаваемые вопросы

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

  • Зачем выполнять отладку с помощью IntelliTrace?

  • Какие данные собирает IntelliTrace?

  • Замедлит ли IntelliTrace работу приложения?

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

Поддерживается

Ограниченная поддержка

  • Приложения F# на экспериментальной основе

  • Приложения для Магазина Windows— поддержка только событий

Не поддерживается

  • C++, другие языки и скрипт

  • Службы Windows, Silverlight, Xbox и приложения Windows Mobile

Примечание

Нельзя использовать IntelliTrace для отладки уже выполняемого процесса.Необходимо запустить IntelliTrace при запуске процесса.

Зачем выполнять отладку с помощью IntelliTrace?

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

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

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

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

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

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

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

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

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

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

    Можно собирать данные IntelliTrace из Microsoft Test Manager, сохранить эти данные в файле .iTrace и вложить этот файл в рабочий элемент Team Foundation Server для последующего изучения. См. разделы Сбор дополнительных данных диагностики в ручных тестах и Отладка приложения с помощью сохраненных данных 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 записывает тип исключения и сообщение для:

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

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

  • События .NET Framework

    По умолчанию IntelliTrace записывает наиболее распространенные события .NET Framework. Например:

    • при доступе к файлу IntelliTrace записывает имя файла;

    • Для события установки флажка IntelliTrace собирает состояние и текст флажка.

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

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

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

    Пример

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

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

  • Имя функции

  • Значения простых типов данных, переданные в качестве параметров в точках входа функции и возвращаемые в точках выхода функции.

  • Значения автоматических свойств при их чтении или изменении.

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

Примечание

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

См. раздел Настройка IntelliTrace для сбора данных об отладке.

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

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

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

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

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

Где можно получить дополнительные сведения?

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

Настройка IntelliTrace для сбора данных об отладке

Включение данных диагностической трассировки в сообщения об ошибках, которые трудно воспроизвести

Настройка версии для диагностики проблем после развертывания

Отладка приложения с помощью сохраненных данных IntelliTrace

Блоги

Visual Studio ALM + Team Foundation Server

Форумы

Диагностика Visual Studio

Руководство

Тестирование для непрерывной поставки с помощью Visual Studio 2012 — глава 6: панель элементов тестирования