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] для подключения к процессу.
  • Остановите службу, когда закончите (иначе выключение не будет завершено)

Итак, шаги выглядели так:

  1. VSInstr MyAssembly.dll
  2. sn -Ra MyAssembly.dll TheKeyFile.snk
  3. VsPerfCLREnv /globaltraceon
  4. Установить сервис при ручном запуске
  5. Перезапустить компьютер
  6. VsPerfCmd /start:trace /output:Reports/Report.vsp
  7. Запустить сервис вручную
  8. VsPerfCmd /processon: (поиск в диспетчере задач)
  9. Делай, что хочешь измерить
  10. Остановить сервис
  11. VsPerfCmd / shutdown
Другие вопросы по тегам