Вопрос

Я прочитал документацию и использовал описанные команды, однако по какой-то причине я не получаю никаких символов, а только серию «неизвестных» в столбце функций сводной таблицы для всего, кроме самого верхнего набора приложений, которые я пробовал. для отладки....Я установил переменную среды для сервера Microsoft и каталогов, содержащих PDB для приложения.Я также обязательно выбрал пункт «Загрузить символы» перед отображением сводной таблицы.

Судя по информации, которую я читал, отображение таблицы должно занять некоторое время, пока она загружает символы, однако для меня таблица отображалась почти мгновенно, и только самые верхние элементы в sprite.exe->sprite.exe имели имена функций, остальные строки функции были либо пустыми, либо «неизвестными».

Я использую Vista SP1.

Это командный файл, который я использовал.Сделал ли я что-нибудь, что могло бы помешать загрузке символов?

REM start profiler
xperf -on PROC_THREAD+LOADER+INTERRUPT+DPC+PROFILE^
 -stackwalk profile -minbuffers 16 -maxbuffers 1024 -flushtimer 0^
 -f tmp.etl
REM run the app we want to profile
sprite.exe
REM stop
xperf -d profile.etl
REM set symbol path
set _NT_SYMBOL_PATH = ^
 C:\Projects\C++\fl lib\bin;^ REM dlls
 C:\Projects\C++\fl lib\samples\bin;^ REM main exe
 SRV*c:\symbols*http://msdl.microsoft.com/download/symbols
REM display profile
xperf profile.etl
Это было полезно?

Решение

Какая версия dbghelp.dll оно использует?У меня возникли проблемы с работой символов PDB с kernrate и другие утилиты при использовании версии dbghelp.dll который установлен в %SystemRoot%\system32.

Возможно, вам придется скопировать dbghelp.dll и symsrv.dll из последней версии инструментов отладки для Windows в каталог, где XPerf сможет его найти.

Кроме того, вам необходимо удалить пробел перед '=', иначе вы определяете "_NT_SYMBOL_PATH"переменная (включая пробел в конце имени).

Включение комментариев в конце строки также не сработает.Символ продолжения строки, например «^», обычно должен быть последним символом в строке.Когда я запустил этот оператор (на XP), я получил «_NT_SYMBOL_PATH" равно "C:\Projects\C++\fl lib\bin; REM dlls" и ошибка в следующей строке.

Другие советы

Попробуйте установить

TRACE_FORMAT_SEARCH_PATH

переменная среды.Если это не сработает, возможно, вам придется вручную извлечь файлы TMF из PDB с помощью TracePdb.exe (или, по крайней мере, использовать обычный путь вместо пути SYM*).Это, безусловно, самая раздражающая часть использования трассировок ETL/XPerf.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top