VSIntr данные не собираются
Я пытаюсь использовать наше приложение в поисках оптимизации производительности, но мне не удается извлечь из него какие-либо данные. В основном меня интересует время выполнения функций и сколько раз они вызывались.
Можете ли вы указать на ошибку в моем процессе, пожалуйста?
Вот что я делаю:
1. VSInstr MyAssembly.dll
Это создает инсталлированную dll (например, в два раза больше) и создает резервную копию оригинала. Я получаю предупреждение о вещах со строгим именем, поэтому шаг 2
2. sn -Ra MyAssembly.dll TheKeyFile.snk
Говорит, что отставка успешна
3. VsPerfCLREnv /traceon
Настройка переменных среды
4. Запуск программы. Я иду прямо перед тем шагом, который хочу исследовать.
5. VsPerfCmd / start: trace /output:../Reports/Report.vsp
Начиная трассировку
6. Нажмите кнопку, чтобы выполнить процесс (создание приложения) и ожидая, чтобы закончить
7. VSPerfCmd / выключение
Прекратить отслеживание.
8. VSPerfCLREnv / off
Сбросить среду до нормальной
В конце всего этого я проверяю файл Report.vsp. Это файл размером 148 КБ, который при открытии в VS2017 выбрасывает эти два всплывающих окна с ошибками и ничего не открывает:
- Файл не содержит буферов данных
- Не удалось проанализировать отчет
1 ответ
Решение было
- Используйте /globaltraceon вместо / traceon
- Сначала запустите VsPerfCmd /start:trace и только потом запускайте службу
- Вызовите VSPerfCmd /processon:[PID] для подключения к процессу.
- Остановите службу, когда закончите (иначе выключение не будет завершено)
Итак, шаги выглядели так:
- VSInstr MyAssembly.dll
- sn -Ra MyAssembly.dll TheKeyFile.snk
- VsPerfCLREnv /globaltraceon
- Установить сервис при ручном запуске
- Перезапустить компьютер
- VsPerfCmd /start:trace /output:Reports/Report.vsp
- Запустить сервис вручную
- VsPerfCmd /processon: (поиск в диспетчере задач)
- Делай, что хочешь измерить
- Остановить сервис
- VsPerfCmd / shutdown