Есть ли способ извлечь фактические адреса стека вызовов из трассировки регистратора производительности Windows (WPR)?
Согласно https://randomascii.wordpress.com/2013/11/04/exporting-arbitrary-data-from-xperf-etl-files/, wpaexporter.exe должен быть правильным инструментом для этого.
Мне удается подготовить профиль с нужными данными, но, к сожалению, wpaexporter продолжает пытаться переводить адреса, даже если "-symbols" не задан в командной строке, генерируя некоторые бесполезные
/<ModuleName.dll>!<Symbols disabled>
предупреждения.
Это раздражает, потому что часть нашего приложения использует некоторый код Delphi, который не может генерировать символы в формате, совместимом с Microsoft. С помощью адресов мы сможем найти символы Delphi в стеке вызовов, используя файлы карт.
Есть ли способ извлечь адреса стека вызовов из трассировки WPR?
2 ответа
Да. Вы также можете использовать xperf.exe. Вы пробовали вариант действий?
Здесь должен помочь стек xperf -a.
Вы можете увидеть подробную информацию с помощью команды обработки xperf -help.
Спасибо, я полностью пропустил варианты обработки xperf...
Тем временем я обнаружил, что LogParser ( https://www.microsoft.com/en-us/download/details.aspx?id=24659) также может экспортировать файл etl в csv (также с фактическими значениями):
LogParser.exe "" Выбрать * из файла.etl" -i:ETW -o:CSV -oTsFormat " ЧЧ: мм:ss.ln" > output_file.csv
Из того, что я видел до сих пор, вывод LogParser мог бы быть более подходящим для автоматического синтаксического анализа (только одна строка на событие в файле, без заголовка), в то время как вывод xperf больше подходит для обработки человеком (табличное представление).