Есть ли способ извлечь фактические адреса стека вызовов из трассировки регистратора производительности 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 больше подходит для обработки человеком (табличное представление).

Другие вопросы по тегам