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


Загрузка символов

В Windows Анализатор производительности (WPA) можно задать следующие параметры пользователя:

  • Загрузить символы

  • Настройка путей к символам

Чтобы изменить эти параметры, откройте запись и выберите параметр в меню Трассировка .

Управляемые символы

Разрешения символов и стеки для управляемых процессов поддерживаются в следующих системах:

  • В платформа .NET Framework версии 4.5 или более поздней версии в Windows 8 или более поздней версии

  • С платформа .NET Framework 4.0 или более поздней версии на компьютерах x86

При записи трассировки с помощью WPR WPR включает всех поставщиков, необходимых для разрешения управляемых символов в трассировке. WPR создает папку рядом с сохраненной трассировкой, которая содержит PDB-файлы этих управляемых символов. Когда WPA открывает трассировку, WPA ищет эту папку и автоматически добавляет ее в путь к символам. Если WPR не использовался для создания трассировки, любые символы для платформа .NET Framework программ могут декодироваться не полностью или декодироваться вообще.

Символы JavaScript

Разрешение символов и стеки для процессов JavaScript поддерживаются в системах под управлением следующего программного обеспечения:

  • Windows 7 вместе с Интернетом Обозреватель 10 или более поздней версии

  • Приложения, использующие JavaScript на Windows 8

WP позволяет необходимым поставщикам декодировать символы для кода JavaScript в поддерживаемых системах. Адреса и кадры стека метода JavaScript декодируются в имя файла JavaScript, имя метода, номер строки и номер столбца.

Относительные пути и внедренные переменные среды

Переменные среды _NT_SYMBOL_PATH и _NT_SYMCACHE_PATH могут использовать относительные пути, абсолютные пути, пути к общим сетевым ресурсам или внедренные переменные среды. WPA преобразует относительные пути в абсолютные при первом установке относительных путей. WPA преобразует относительные пути, которые WPA загружает из переменных среды при запуске программы.

WPA преобразует относительные пути, которые вы вводите в диалоговом окне Настройка путей символов при закрытии диалогового окна. Изменения в текущем каталоге не влияют на уже заданные относительные пути. В диалоговом окне Настройка путей к символам отображаются заданные в настоящее время пути при первом открытии диалогового окна, чтобы увидеть, как WPA развертывает все относительные пути.

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

Другие программы, использующие переменную среды _NT_SYMCACHE_PATH , например WinDbg или Microsoft Visual Studio, могут не обрабатывать относительные пути или внедренные переменные среды таким же образом.

Путь SymCache

WPA использует файлы SymCache для кэширования сведений о символах из файлов базы данных программ (PDB) компактным и простым в доступе способом. После того как WPA заполнит папку SymCache символами для трассировки, перезагрузить символы для этой трассировки будет гораздо быстрее. Если файл SymCache становится слишком большим или больше не требуется, его можно безопасно удалить. WPA повторно заполняет папку SymCache новыми файлами по мере необходимости. Вы также можете скопировать файлы SymCache на другой компьютер или предоставить общий доступ к файлам по сети, чтобы ускорить загрузку символов на разных компьютерах.

Если вы используете диалоговое окно Настройка путей к символам , чтобы задать для переменной среды _NT_SYMCACHE_PATH папку, к которой WPA не может получить доступ, кнопка ОК не закроет диалоговое окно. Однако сообщение об ошибке не отображается.

Если переменная среды _NT_SYMCACHE_PATH не назначена или пуста, WPA создает папку SymCache в корне диска, содержащего исполняемый файл WPA. Если переменная среды _NT_SYMCACHE_PATH выполняется в общей сетевой папке, она создает папку SymCache в корне диска, содержащего папку Program Files. Обычно это диск C.

Примеры SymCache

Следующая команда помещает файл SymCache в папку C:\SymCache :

C:\SymCache

Следующая команда помещает файл SymCache в папку C:\SymCache, выполняет поиск символов в папке \\network\SymCache , а затем обрабатывает переменную среды _NT_SYMBOL_PATH :

C:\SymCache*\\network\SymCache

В этом примере копируются все символы, которые этот пример находит в папке \\network\SymCache , в папку C:\SymCache . Это позволяет пользователю создать большую папку SymCache, а затем скопировать в назначенную папку только те файлы, которые нужны пользователю для определенной трассировки.

Чтобы выполнить поиск в нескольких альтернативных папках SymCache, добавьте папки в путь поиска с помощью разделителя звездочки (*). Когда WPA находит файл SymCache в одном из альтернативных расположений, WPA копирует файл только в первую папку SymCache в пути. WPA также помещает только что созданные файлы SymCache в первую папку SymCache в пути.

Чтобы отключить копирование и запись, но по-прежнему использовать функцию иерархического поиска, следует оставить первую позицию в пути пустой, как показано в следующем примере:

*\\network\SymCache

При выполнении этой команды WPA выполняет поиск в папке \\network\SymCache . Однако WPA не копирует результаты и не записывает созданные файлы SymCache в другую папку.

Путь к символу

Основные сведения о переменной среды _NT_SYMBOL_PATH см. в следующих статьях MSDN:

Загрузка символов в WPA зависит от путей, которые указывает переменная среды _NT_SYMBOL_PATH (за исключением символов, которые WPA уже кэшировал в папке SymCache). WPA выполняет последовательный поиск по путям, начиная с левого. Однако загрузка символов из PDB-файла по одному из этих путей может занять много времени, особенно если PDB существует на удаленном компьютере. Поэтому рекомендуется размещать сетевые пути после любых локальных путей и использовать локальный кэш PDB для любого удаленного сервера символов. Однако даже если все символы хранятся локально, WPA может перестать отвечать на запросы во время загрузки символов. WPA возвращается в интерактивное состояние после завершения загрузки символов.

Если переменная среды _NT_SYMBOL_PATH не задана, WPA использует следующее значение по умолчанию:

 .;SRV*\Symbols*https://msdl.microsoft.com/download/symbols;

Точка с запятой (;) разделяют разные пути. Первый путь — точка (.). WPA сопоставляет этот путь с текущей папкой при загрузке трассировки WPA. Дополнительные сведения о том, как WPA обрабатывает относительные пути, см. в разделе SymCache Path этой статьи.

Второй путь следующий:

 SRV*\Symbols*https://msdl.microsoft.com/download/symbols

Необходимо также задать путь NGEN PB:

set _NT_SYMBOL_PATH=srv*C:\Symbols.NGEN;srv*https://msdl.microsoft.com/download/symbols

При указании этого пути WPA скачивает символы с сервера общедоступных символов Майкрософт и кэширует PDB-файлы в папке \Symbols (эта папка относится к папке установки Windows Performance Toolkit). Поэтому WPA помещает папку Symbols рядом с папкой SymCache. Однако если папка SymCache находится в общей сетевой папке, WPA создает папку Symbols в корне диска, на котором хранится папка Program Files. Обычно это диск C.

Если вы не хотите искать и загружать символы из PDB-файлов, можно задать для переменной среды _NT_SYMBOL_PATH локальную папку, которая не содержит символов, таких как точка (.). Не оставляйте переменную среды _NT_SYMBOL_PATH пустой. Если оставить переменную среды _NT_SYMBOL_PATH пустой, WPA использует значение по умолчанию.

Когда WPA открывает запись, WPA ищет папку с тем же именем, что и трассировка, использующая расширение .ngenpdb . Если WPA находит эту папку, WPA добавляет ее в конец переменной среды _NT_SYMBOL_PATH . Средство записи производительности Windows (WPR) автоматически создает папку, содержащую PDB-файлы для управляемого кода, записанного WPR во время записи. Например, если открыть запись C:\trace.etl в WPA, WPA выполнит поиск папки C:\trace.etl.ngenpdb . Если эта папка существует, WPA добавляет ее в переменную среды _NT_SYMBOL_PATH .

Функции WPA

Загрузка символов или настройка путей к символам

Использование поддержки PDB В CLR 4.0 NGEN

Распространенные проблемы с анализом In-Depth