Диагностика проблем в рабочей среде при помощи IntelliTrace и Visual Studio 2012

Общие сведения

Инструмент IntelliTrace, который впервые появился в Visual Studio 2010, изменил правила игры в сфере отладки программного обеспечения, предоставив разработчикам возможность сделать шаг «назад во времени», чтобы увидеть, как приложение перешло в его текущее состояние. IntelliTrace дает детальное представление о поведении приложения, регистрируя такие события, как доступ к файлам и реестру, исключения и вызовы методов. В этом упражнении вы узнаете, как Visual Studio 2012 расширяет возможности IntelliTrace для организаций, отвечающих за разработку и тестирование, позволяя ИТ-администраторам вести запись файлов IntelliTrace на рабочих серверах. Разработчики могут анализировать эти файлы для проведения диагностики проблем в рабочей среде.

Необходимые условия

Для этого практического занятия вам понадобится виртуальная машина Visual Studio 2012, предоставляемая Microsoft. Для получения дополнительных сведений о получении и использовании этой виртуальной машины выберите ссылку.

Информация о сценарии Fabrikam Fiber

В этой группе практических занятий для более удобного изучения сценариев упоминается вымышленная компания Fabrikam Fiber, которая предоставляет доступ к кабельному телевидению и оказывает сопутствующие услуги в США. С целью масштабирования своего веб-сайта для клиентов она использует приложение Windows Azure, чтобы предоставить конечным пользователям возможность самообслуживания и отслеживания доступности технических специалистов. В компании используется также локальное приложение ASP.NET MVC для повышения эффективности работы представителей отдела обслуживания клиентов. Приложение позволяет управлять процессом выполнения заказов клиентов.

В рамках этой группы практических занятий вы примете участие в ряде сценариев, в которые вовлечены разработчики и тестировщики компании Fabrikam Fiber. Рабочая группа из 8–10 специалистов решила использовать инструменты управления жизненным циклом приложений Visual Studio для управления исходным кодом, запуска сборок, проверки веб-сайтов, а также планирования и мониторинга процесса реализации проекта.

Упражнения

Это практическое занятие включает следующие упражнения:

  1. Применение IntelliTrace в рабочей среде.
  2. Отладка с применением файлов IntelliTrace, сформированных в рабочей среде.

Примерная продолжительность практического занятия: 60 минут.

Упражнение 1. Применение IntelliTrace в рабочей среде

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

  1. Войдите в систему с логином Adam. Для всех учетных записей используется пароль P2ssw0rd.
  2. Запустите Internet Explorer и нажмите кнопку FF Customer Portal(Клиентский портал Fabrikam Fiber) на панели Favorites (Избранное), чтобы загрузить портал поддержки клиентов Fabrikam Fiber Support (http://www.fabrikam.com).

Рисунок 1. Клиентский портал Fabrikam Fiber

  1. Выберите для просмотра несколько билетов службы в разделе My Tickets (Мои билеты). При просмотре одного из билетов вы получите сообщение об ошибке, которая произошла при получении данных с сервера. Эта информация поступает из базы данных. Впрочем, сообщение об ошибке общего характера появляется вследствие целого ряда причин.

Рисунок 2. Сообщение об ошибке, которое возникло при выборе билета службы

  1. Закройте Internet Explorer.
  2. Как правило, первым шагом в процессе определения причины ошибки будет анализ журналов и, возможно, трассировка стека. Если эти действия не позволяют получить достаточно информации, и ошибку трудно воспроизвести в среде разработки, рабочая группа разработчиков может в конечном итоге потратить много времени на определение причины и устранение проблемы. Установка Visual Studio или других инструментов отладки в рабочей среде не представляется целесообразной.
  3. Давайте познакомимся с процессом развертывания и применения IntelliTrace в рабочей среде с целью сбора архивных данных отладки. Откройте окно Windows Explorer (Проводник Windows) и перейдите в корневой каталог диска C. Обратите внимание, что здесь находятся две папки, созданные заранее специально для данного упражнения: c:\IntelliTrace — каталог автономных файлов IntelliTrace и c:\LogFileLocation — каталог для записи файлов IntelliTrace в процессе выполнения данного упражнения.

Рисунок 3. Местоположение папки с файлами IntelliTrace и папки с файлами журнала

  1. В окне Explorer(Проводник) щелкните правой кнопкой мыши папку LogFileLocation (Место хранения файлов журнала) и выберите пункт Properties (Свойства), чтобы открыть соответствующее окно. Мы должны убедиться в том, что пулу приложений IIS предоставлено разрешение на использование папки LogFileLocation.
  2. Выберите вкладку Security(Безопасность), прокрутите вниз список групп и имен пользователей и найдите FabrikamFiber.Extranet.Web(Экстрасеть FabrikamFiber). Соответствующие разрешения были добавлены в этой виртуальной машине заранее, но в рабочей среде вы должны выполнить этот шаг самостоятельно.

Рисунок 4. Настройка системы безопасности с целью разрешения записи файлов журнала

  1. Нажмите клавишу ESCAPE, чтобы выйти из окна свойств.
  2. IntelliTrace можно развернуть в рабочей среде путем простого извлечения содержимого файла IntelliTraceCollection.cab из комплекта поставки Visual Studio 2012. Это действие в виртуальной машине также было выполнено заранее для вашего удобства, поэтому можно пропустить этот шаг.

Рисунок 5. Извлеченное содержимое файла IntelliTraceCollection.cab

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

  1. Откройте окно PowerShell и введите следующую команду, чтобы импортировать модуль IntelliTrace PowerShell:
    Import-Module c:\IntelliTrace\Microsoft.VisualStudio.IntelliTrace.PowerShell.dll
  2. Чтобы увидеть команды, доступные в IntelliTrace, наберите команду PowerShell:
    Get-Command *IntelliTrace*

Рисунок 6. Поиск команд с текстом «IntelliTrace»

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

  1. Чтобы получить справку по использованию команд PowerShell IntelliTrace, введите что-либо подобное:

Get-Help Start-IntelliTraceCollection

Рисунок 7. Экран справки для команды Start-IntelliTraceCollection

Примечание. В разделе справки REMARKS (ЗАМЕЧАНИЯ) представлена информация о том, как можно получить более детальные примеры использования команды.

  1. Теперь мы можем приступить к сбору данных IntelliTrace. Введите следующую команду PowerShell, чтобы начать сбор информации в рамках пула приложений FabrikamFiber.Extranet.Web IIS. Результаты будут храниться в файлах журнала .iTrace в папке, которую мы предварительно создали.

Start-IntelliTraceCollection "FabrikamFiber.Extranet.Web" c:\IntelliTrace\collection_plan.ASP.NET.trace.xml c:\LogFileLocation

Примечание. В Visual Studio 2012 вы можете вручную отредактировать файл плана сбора информации. Графический редактор, как ожидается, будет включен ​в более поздние версии.

  1. Получив запрос на подтверждение, нажмите клавишу Y. Для продолжения нажмите клавишу Enter(Ввод).

Рисунок 8. Подтверждение запуска процесса сбора информации

  1. Запустите Internet Explorer и нажмите кнопку FF Customer Portal(Клиентский портал Fabrikam Fiber) на панели Favorites (Избранное), чтобы загрузить http://www.fabrikam.com.
  2. Инструмент IntelliTrace в настоящее время настроен для сбора отладочной информации, указанной в файле конфигурации для плана сбора. Выберите билеты службы, чтобы воспроизвести ошибку, с которой мы столкнулись ранее. Когда ошибка появится, закройте Internet Explorer.

Рисунок 9. Воспроизведение ошибки

  1. Вернитесь в окно PowerShell и введите следующую команду, чтобы узнать текущее состояние процесса сбора информации.

Get-IntelliTraceCollectionStatus -ApplicationPool "FabrikamFiber.Extranet.Web"

Рисунок 10. Состояние процесса сбора информации

  1. Введите следующую команду, чтобы остановить сбор данных IntelliTrace для пула приложений FabrikamFiber.Extranet.Web. Подтвердите действие, когда система выдаст соответствующий запрос.

Stop-IntelliTraceCollection "FabrikamFiber.Extranet.Web"

 

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

  1. В реальной ситуации на данном этапе файл IntelliTrace будет направлен разработчику или тест-инженеру для более детального анализа.

Упражнение 2. Отладка с применением файлов IntelliTrace, сформированных в рабочей среде

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

  1. Применительно к нашей ситуации предположим, что мы уже получили этот файл IntelliTrace и передали его на компьютер, на котором ведется разработка, с установленным пакетом Visual Studio 2012. Двойным щелчкомзагрузите файл IntelliTrace в Visual Studio 2012.

Рисунок 11. Загрузка файла IntelliTrace

  1. В окне со сводной информацией IntelliTrace перейдите к разделу Exception Data (Данные об исключении). Здесь представлена таблица с информацией обо всех возникших исключениях. По умолчанию записи упорядочены по дате и времени убывания.

Рисунок 12. Раздел Exception Data (Данные об исключении) в окне со сводной информацией IntelliTrace

  1. Выберите последнее исключение System.NullReferenceExceptionв списке. Это первое и самое раннее событие. Нажмите кнопку Start Debugging(Начать отладку), чтобы начать сеанс отладки в IntelliTrace.

Рисунок 13. Запуск процесса отладки в отношении конкретного события

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

Рисунок 14. Отладка кода, вызвавшего исключение

  1. В окне Locals (Локальные объекты) обратите внимание, что параметр ServiceTicket.AssignedTo в данный момент имеет нулевое значение. Именно поэтому ссылка на serviceTicket.AssignedTo.FullName в коде дала нулевой результат, который мы наблюдали. На данном этапе мы могли бы оформить сообщение об ошибке в Team Foundation Server и прикрепить файл IntelliTrace, чтобы помочь рабочей группе разработчиков внести соответствующие исправления.

Рисунок 15. Выявление причины возникновения исключения

Свои отзывы и предложения вы можете отправить по электронной почте: VSKitFdbk@Microsoft.com

© 2012 г. Корпорация Microsoft. Все права защищены.