Сбор данных IntelliTrace из-за пределов среды Visual Studio с использованием автономного сборщика

Для отладки приложений в производственной или других средах используйте сборщик IntelliTrace для сохранения данных диагностики в файл журнала IntelliTrace (ITRACE-файл).Это позволяет записывать, что произошло в приложении, без установки Visual Studio или изменения среды приложения.Завершив сбор данных, достаточно удалить сборщик, чтобы отменить его установку.

Посмотрите IntelliTrace в действии: Сбор и анализ данных IntelliTrace в производственной среде для отладки (видео 9 канала) (Collecting and analyzing IntelliTrace data in production for debugging (Channel 9 video)).

Требования

  • .NET Framework 3.5, 4 или 4.5

  • Visual Studio Ultimate, чтобы открывать ITRACE-файл на компьютере разработчика или на другом компьютере

    ПримечаниеПримечание

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

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

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

  • Инструкции по началу работы

  • Как получить большую часть данных без замедления работы приложений?

  • Где еще можно получить данные IntelliTrace?

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

  • Веб-приложения ASP.NET, размещенные в службах IIS версии 7.0, 7.5 и 8.0

  • Приложения SharePoint 2010

  • Управляемые приложения рабочего стола (файлы .exe)

Инструкции по началу работы

  1. Установка сборщика

  2. Set up permissions for the collector directory.

  3. Установка командлетов PowerShell IntelliTrace для сбора данных для приложений SharePoint или веб-приложений

  4. Настройка разрешений для каталога с ITRACE-файлами

  5. Сборка данных из веб-приложения или приложения SharePoint

    -или-

    Сбор данных из управляемого приложения

  6. Открытие ITRACE-файла в Visual Studio Ultimate

Установка сборщика

  1. На сервере приложения создайте каталог сборщика, например: C:\IntelliTraceCollector

  2. Получите сборщик из Центра загрузки Майкрософт или из папки установки Visual Studio:

    • Центр загрузки Майкрософт:

      1. На сервере приложения перейдите к Сборщик IntelliTrace для Visual Studio

      2. Рядом с IntelliTraceCollector.exe выберите Загрузить.

      3. Сохраните IntelliTraceCollector.exe в каталог сборщика, например: C:\IntelliTraceCollector

      4. Запустите IntelliTraceCollector.exe.Это извлечет файл IntelliTraceCollection.cab.

      - или -

    • Папка установки Visual Studio:

      ПримечаниеПримечание

      Для получения сборщика, поддерживающего события диагностики для приложений SharePoint 2010, загрузите Сборщик IntelliTrace для Visual Studio или убедитесь, что уже установлена Visual Studio 2012.1.

      1. Скопируйте IntelliTraceCollection.cab из следующей папки:

        ..\Microsoft Visual Studio 11.0\Common7\IDE\CommonExtensions\Microsoft\IntelliTrace\11.0.0

      2. Поместите IntelliTraceCollection.cab в каталог сборщика, например: C:\IntelliTraceCollector

  3. Разверните IntelliTraceCollection.cab:

    1. На сервере приложения откройте окно командной строки с правами администратора.

    2. Перейдите в каталог сборщика, например: C:\IntelliTraceCollector

    3. С помощью команды expand, включая точку (.) в конце, разверните IntelliTraceCollection.cab:

      разверните /f:* IntelliTraceCollection.cab.

      ПримечаниеПримечание

      Точка (.) сохраняет вложенные папки, содержащие локализованные планы сбора.

Настройка разрешений для каталога сборщика

  1. На сервере приложения откройте окно командной строки с правами администратора.

  2. Используйте команду icacls Windows, чтобы дать администратору сервера полные разрешения для каталога сборщика.Например:

    icacls "C:\IntelliTraceCollector" /grant "<Домен\Идентификатор_администратора>":F

  3. Сбор данных для веб-приложения или приложения SharePoint:

    1. Предоставьте человеку, который будет запускать командлеты IntelliTrace PowerShell, полные разрешения для каталога сборщика.

      Например:

      icacls "C:\IntelliTraceCollector" /grant "<Домен\Идентификатор_пользователя>":F

    2. Предоставьте пулу приложений для веб-приложения или приложения SharePoint разрешения на чтение и выполнение в каталоге сборщика.

      Например:

      • Для веб-приложения в пуле приложений DefaultAppPool:

        icacls "C:\IntelliTraceCollector" /grant "IIS APPPOOL\DefaultAppPool":RX

      • Для приложения SharePoint в пуле приложений SharePoint - 80:

        icacls "C:\IntelliTraceCollector" /grant "IIS APPPOOL\SharePoint - 80":RX

Установка командлетов PowerShell IntelliTrace для сбора данных для приложений SharePoint или веб-приложений

  1. На сервере приложения убедитесь, что PowerShell включено.В большинстве версий Windows Server можно добавить эту функцию, воспользовавшись средством администрирования Диспетчер сервера.

    Добавление PowerShell с помощью диспетчера серверов

  2. Установите командлеты IntelliTrace PowerShell.

    1. Откройте командное окно PowerShell от имени администратора.

      1. Выберите Пуск, Все программы, Стандартные, Windows PowerShell.

      2. Выберите один из следующих шагов:

        • На 64 разрядных операционных системах откройте контекстное меню для Windows PowerShell.Выберите Запуск от имени администратора.

        • На 32 разрядных операционных системах откройте контекстное меню для Windows PowerShell (x86).Выберите Запуск от имени администратора.

    2. В окне командной строки PowerShell используйте команду Import-Module, чтобы импортировать Microsoft.VisualStudio.IntelliTrace.PowerShell.dll.

      Например:

      Import-Module "C:\IntelliTraceCollector\Microsoft.VisualStudio.IntelliTrace.PowerShell.dll"

Настройка разрешений для каталога с ITRACE-файлами

  1. На сервере приложения создайте каталог с ITRACE-файлами, например: C:\IntelliTraceLogFiles

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

    • Можно поместить ITRACE-файл и файлы сборщика в одно и то же место.Однако в случае веб-приложения или приложения SharePoint убедитесь, что это место вне папки, в которой находится приложение.

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

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

  2. Для веб-приложений или приложений SharePoint предоставьте пулу приложений полные разрешения в каталоге ITRACE-файлов.Можно использовать команду icacls Windows или проводник Windows (или проводник файлов).

    Например:

    • Настройка разрешений с помощью команды icacls Windows:

      • Для веб-приложения в пуле приложений DefaultAppPool:

        icacls "C:\IntelliTraceLogFiles" /grant "IIS APPPOOL\DefaultAppPool":F

      • Для приложения SharePoint в пуле приложений SharePoint - 80:

        icacls "C:\IntelliTraceLogFiles" /grant "IIS APPPOOL\SharePoint - 80":F

      -или-

    • Настройка разрешений с проводником Windows (или проводником файлов):

      1. Откройте Свойства для каталога с ITRACE-файлами.

      2. На вкладке Безопасность выберите Изменить, Добавить.

      3. Убедитесь, что Встроенные субъекты безопасности отображаются в окне Выбрать тип объекта.Если их там нет, выберите Типы объектов для их добавления.

      4. Убедитесь, что локальный компьютер отображается в окне Из этого расположения.Если его там нет, выберите Расположения для его изменения.

      5. В поле Введите имена объектов для выделения добавьте пул приложений для веб-приложений или приложений SharePoint.

      6. Выберите Проверить имена, чтобы разрешить имя.Нажмите кнопку ОК.

      7. Убедитесь, что пул приложений имеет Полный доступ.

Сборка данных из веб-приложения или приложения SharePoint

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

    Start-IntelliTraceCollection"<Пул_приложений>"<Путь_к_плану_сбора><Полный_путь_к_каталогу_ITRACE_файлов>

    Важное примечаниеВажно

    После выполнения этой команды, введите Y, чтобы подтвердить начало сбора сведений.

    Например, для сбора данных из приложения SharePoint в пуле приложений SharePoint - 80:

    Start-IntelliTraceCollection "SharePoint - 80" "C:\IntelliTraceCollector\collection_plan.ASP.NET.default.xml" "C:\IntelliTraceLogFiles"

    Пул_приложений

    Имя пула приложений, в котором выполняется приложение

    Путь_к_плану_сбора

    Путь к плану сбора, XML-файлу, который задает параметры для сборщика.

    Можно определить план, который поставляется со сборщиком.Следующие планы работают для веб-приложений и приложений SharePoint:

    • collection_plan.ASP.NET.default.xml

      Собирает только события IntelliTrace и события SharePoint, включая исключения, вызовы базы данных и запросы веб-сервера.

    • collection_plan.ASP.NET.trace.xml

      Собирает вызовы функций и все данные в collection_plan.ASP.NET.default.xml.Этот план полезен для тщательного анализа, но может значительнее замедлить приложение, чем collection_plan.ASP.NET.default.xml.

    Чтобы избежать замедления приложения, настройте эти планы или создайте свой собственный план.Для обеспечения безопасности поместите все пользовательские планы в одно и то же безопасное место в виде файлов сборщика.См. разделы Создание и настройка планов сбора IntelliTrace (Creating and Customizing IntelliTrace Collection Plans) и Как мне получить большую часть данных без замедления работы приложений?

    ПримечаниеПримечание
    По умолчанию максимальный размер ITRACE-файла равен 100 МБ.Если ITRACE-файл достигает этого лимита, сборщик удаляет самые ранние записи в файле, чтобы освободить место для новых.Чтобы изменить этот лимит, отредактируйте атрибут MaximumLogFileSize плана сбора.

    Где можно найти локализованные версии этих планов сбора?

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

    Полный_путь_к_каталогу_ITRACE_файлов

    Полный путь к каталогу ITRACE-файлов.

    Примечание о безопасностиПримечание по безопасности
    Укажите полный, а не относительный путь.

    Сборщик прикрепляется к пулу приложений и запускает сбор данных.

    Можно открыть файл .iTrace в данный момент? Нет, файл заблокирован во время сбора данных.

  2. Воспроизведите проблему.

  3. Чтобы получить снимок ITRACE-файла, используйте следующий синтаксис:

    Checkpoint-IntelliTraceCollection"<Пул_приложений>"

  4. Чтобы проверить состояние сборки, используйте следующий синтаксис:

    Get-IntelliTraceCollectionStatus

  5. Для остановки сбора данных используйте следующий синтаксис:

    Stop-IntelliTraceCollection"<Пул_приложений>"

    Важное примечаниеВажно

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

  6. Открытие ITRACE-файла в Visual Studio Ultimate

Сбор данных из управляемого приложения

  1. Для запуска приложения и сбора данных в одно и то же время используйте следующий синтаксис:

    <Полный_путь_к_выполняемому_файлу_сборщика_IntelliTrace>\IntellitraceSC.exe launch /cp:<Путь_к_плану_сбора>/f:<Полный_путь_к_каталогу_ITRACE_файлов_и_имя_файла><Путь_к_исполняемому_файлу_приложения_и_имя_файла>

    Например, сбор данных из приложения с именем MyApp:

    C:\IntelliTraceCollector\IntelliTraceSC.exe launch /cp:"C:\IntelliTraceCollector\collection_plan.ASP.NET.default.xml" /f:"C:\IntelliTraceLogFiles\MyApp.itrace" "C:\MyApp\MyApp.exe"

    Полный_путь_к_выполняемому_файлу_сборщика_IntelliTrace

    Полный путь к исполняемому файлу сборщика, IntelliTraceSC.exe

    Путь_к_плану_сбора

    Путь к плану сбора, XML-файлу, который задает параметры для сборщика.

    Можно определить план, который поставляется со сборщиком.Следующие планы работают для управляемых приложений:

    • collection_plan.ASP.NET.default.xml

      Собирает только события IntelliTrace, включая исключения, вызовы базы данных и запросы веб-сервера.

    • collection_plan.ASP.NET.trace.xml

      Собирает вызовы функций и все данные в collection_plan.ASP.NET.default.xml.Этот план полезен для тщательного анализа, но может значительнее замедлить приложение, чем collection_plan.ASP.NET.default.xml.

    Чтобы избежать замедления приложения, настройте эти планы или создайте свой собственный план.Для обеспечения безопасности поместите все пользовательские планы в одно и то же безопасное место в виде файлов сборщика.См. разделы Создание и настройка планов сбора IntelliTrace (Creating and Customizing IntelliTrace Collection Plans) и Как мне получить большую часть данных без замедления работы приложений?

    ПримечаниеПримечание
    По умолчанию максимальный размер ITRACE-файла равен 100 МБ.Если ITRACE-файл достигает этого лимита, сборщик удаляет самые ранние записи в файле, чтобы освободить место для новых.Чтобы изменить этот лимит, отредактируйте атрибут MaximumLogFileSize плана сборки.

    Где можно найти локализованные версии этих планов сбора?

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

    Полный_путь_к_каталогу_ITRACE_файлов_и_имя_файла

    Полный путь к каталогу с ITRACE-файлами и имя ITRACE-файла с расширением .itrace.

    Примечание о безопасностиПримечание по безопасности
    Укажите полный, а не относительный путь.

    Путь_к_исполняемому_файлу_приложения_и_имя_файла

    Путь и имя файла управляемого приложения

  2. Остановите сбор данных, выйдя из приложения.

  3. Открытие ITRACE-файла в Visual Studio Ultimate

Открытие ITRACE-файла в Visual Studio Ultimate

  1. Переместите или скопируйте ITRACE-файл на компьютер с Visual Studio Ultimate.

  2. Дважды щелкните ITRACE-файл вне Visual Studio или откройте файл внутри Visual Studio.

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

    ПримечаниеПримечание

    Для отладки с помощью IntelliTrace и пошагового выполнения кода нужно иметь соответствующие файлы исходного кода и файлы символов.Убедитесь, что файлы символов указаны в пути к символам Visual Studio.В противном случае Visual Studio не удастся разрешить исходные местоположения, отобразится сообщение "Символы не найдены". Дополнительные сведения см. в разделе Поиск файлов символов (.pdb), исходного кода и двоичных файлов.

Как мне получить большую часть данных без замедления работы приложений?

IntelliTrace позволяет собирать большой объем данных, поэтому влияние на производительность приложения зависит от данных, которые собирает IntelliTrace, и типа кода, который он анализирует.См. Оптимизация сбора данных IntelliTrace на рабочих серверах (Optimizing IntelliTrace Collection on Production Servers).

Ниже приведены некоторые способы получения большого объема данных без замедления приложений:

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

    Запустите сбор, воспроизведите проблему, затем остановите сбор данных.Откройте ITRACE-файл в Visual Studio Ultimate и изучите данные.Дополнительные сведения см. в разделе Открытие ITRACE-файла в Visual Studio Ultimate.

  • Для веб-приложений и приложений SharePoint сборщик записывает данные для каждого приложения, которое совместно использует указанный пул приложений.Это может замедлить любое приложение, которое совместно использует один и тот же пул приложений, даже если для одного приложения можно только задать модули в плане сбора.

    Чтобы предотвратить замедление приложения сборщиком, разместите каждое приложение в своем пуле приложений.

  • Просмотрите события в плане сбора, для которых IntelliTrace собирает данные.Отредактируйте план сбора, чтобы отключить нерелевантные или не представляющие интереса события.

    Чтобы отключить события, задайте атрибуту enabled элемента <DiagnosticEventSpecification> значение false.

    <DiagnosticEventSpecification enabled="false">

    Если атрибут enabled не существует, то событие включено.

    Как это повышает производительность?

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

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

  • Просмотрите модули в плане сбора, для которых IntelliTrace собирает данные.Отредактируйте план сбора, чтобы он включал только интересующие вас модули:

    1. Откройте план коллекции.Найдите элемент <ModuleList>.

    2. В <ModuleList> задайте для атрибута isExclusionList значение false.

    3. Используйте элемент <Name> для идентификации каждого модуля одним из следующих параметров: имя файла, строковое значение для включения любого модуля, имя которого содержит эту строку, или открытый ключ.

    Например, чтобы собирать данные только из главного веб-модуля веб-приложения Fabrikam Fiber, создайте список, как показано ниже:

    <ModuleList isExclusionList="false">
       <Name>FabrikamFiber.Web.dll</Name>
    </ModuleList>
    

    Для сбора данных из любого модуля, имя которого содержит Fabrikam, создайте список, как показано ниже:

    <ModuleList isExclusionList="false">
       <Name>Fabrikam</Name>
    </ModuleList>
    

    Для сбора данных из модулей путем указания их токенов открытых ключей, создайте список, как показано ниже:

    <ModuleList isExclusionList="false">
       <Name>PublicKeyToken:B77A5C561934E089</Name>
       <Name>PublicKeyToken:B03F5F7F11D50A3A</Name>
       <Name>PublicKeyToken:31BF3856AD364E35</Name>
       <Name>PublicKeyToken:89845DCD8080CC91</Name>
       <Name>PublicKeyToken:71E9BCE111E9429C</Name>
    </ModuleList>
    

    Как это повышает производительность?

    Это сокращает объем данных о вызове метода и другие данные инструментирования, которые IntelliTrace собирает, когда приложение запускается и выполняется.Эти данные позволяют:

    • Пошаговое прохождение кода после сбора данных.

    • Изучение значений, передаваемых в вызовы функций и возвращаемые из них.

    Почему не исключить модули вместо этого?

    По умолчанию планы сбора исключают модули, задавая для атрибута isExclusionList значение true.Однако если исключить модули, система может продолжить собирать данные из модулей, которые не соответствуют критериям списка, например сторонние модули или модули с открытым исходным кодом.

  • Существуют ли данные, которые IntelliTrace не собирает?

    Да, чтобы уменьшить влияние на производительность, IntelliTrace ограничивает сбор данных значениями типов-примитивов данных, передаваемых методам и возвращаемых из них, и значениями типов-примитивов данных в полях объектов верхнего уровня, передаваемых методам и возвращаемых из них.

    Например, предположим, что имеется сигнатуру метода AlterEmployee, которая принимает целое число id и объект oldemployee раздела Employee:

    public Employee AlterEmployee(int id, Employee oldemployee)

    Тип Employee имеет следующие атрибуты: Id, Name и HomeAddress.Отношение ассоциации существует между Employee и типом Address.

    Связь между Employee и Address

    Сборщик записывает значения для id, Employee.Id, Employee.Name и объекта Employee, возвращаемого из метода AlterEmployee.Однако сборщик не записывает какую-либо информацию об объекте Address, кроме того, равно ли его значение null или нет.Сборщик не записывает данные о локальных переменных в методе AlterEmployee, если только другие методы не используют эти локальные переменные в качестве параметров, в которых они записаны как параметры методов.

Где еще можно получить данные IntelliTrace?

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

Отладка приложения с помощью файлов журнала IntelliTrace (.iTrace)

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

Hh398365.collapse_all(ru-ru,VS.110).gifБлоги

Удаленное использование автономного сборщика IntelliTrace (Using the IntelliTrace Standalone Collector Remotely)

Создание и пользовательская настройка планов сбора IntelliTrace (Creating and Customizing IntelliTrace Collection Plans)

Оптимизация сбора данных IntelliTrace на рабочих серверах (Optimizing IntelliTrace Collection on Production Servers)

Visual Studio ALM + блог TFS

Hh398365.collapse_all(ru-ru,VS.110).gifФорумы

Отладчик Visual Studio (Visual Studio Debugger)

Hh398365.collapse_all(ru-ru,VS.110).gifВидеоклипы

Видео 9 канала. Сбор и анализ данных IntelliTrace (Channel 9 video: Collecting and analyzing IntelliTrace data)