Практическое руководство. Присоединение профилировщика к автономному приложению .NET Framework для сбора данных об использовании памяти при помощи командной строки
В этом разделе описан порядок использования программ командной строки средств профилирования Visual Studio Premium для присоединения профилировщика к запущенному автономному (клиентскому) приложению .NET Framework и сбора данных об использовании памяти.
![]() |
---|
Программы командной строки средств профилирования расположены в подкаталоге \Team Tools\Performance Tools каталога установки Visual Studio.На 64-разрядных компьютерах доступны 64-разрядные и 32-разрядные версии средств.Для использования программ командной строки профилировщика необходимо добавить путь к этим программам в переменную среды PATH окна Командная строка или указать этот путь при вызове команды.Дополнительные сведения см. в разделе Указание пути к программам командной строки средств профилирования. |
Для присоединения к приложению .NET Framework и сбора данных об использовании памяти нужно воспользоваться программой VSPerfCLREnv.cmd, чтобы инициализировать соответствующие переменные среды перед запуском целевого приложения.Когда профилировщик присоединен к приложению можно воспользоваться программой VSPerfCmd.exe для приостановки и возобновления сбора данных.
Чтобы завершить сеанс профилирования, необходимо отсоединить профилировщик от всех профилируемых процессов и явным образом завершить его работу.В большинстве случаев рекомендуется удалять в конце сеанса значения переменных среды, используемые для профилирования.
Присоединение профилировщика
Присоединение профилировщика к выполняющемуся приложению .NET Framework
Откройте окно командной строки.
Инициализируйте переменные среды, используемые для профилирования.Type:
VSPerfClrEnv {/samplegc | /samplegclife} [/samplelineoff]
Параметры /samplegc и /samplegclife позволяют указать, нужно ли собирать только данные о выделении памяти или же следует собирать как данные о выделении памяти, так и данные о времени существования объекта.Задать нужно один и только один параметр.
Параметр
Описания
/samplegc
Сбор данных исключительно о выделении памяти.
/samplegclife
Сбор данных о выделении памяти и времени существования объектов.
Параметр /samplelineoff отключает сбор данных о номерах строк исходного кода.
Запустите профилировщик.Type:
**VSPerfCmd /start:sample /output:**OutputFile [Options]
Параметр /start:sample обеспечивает инициализацию профилировщика.
Параметр /output**:**OutputFile является обязательным при использовании параметра /start.Параметр OutputFile задает имя и расположение файла с данными профилирования (VSP-файла).
С параметром /start:sample можно использовать любые из следующих параметров.
Параметр
Описание
/user:[Domain\]UserName
Задает домен и имя пользователя учетной записи, которая является владельцем профилируемого процесса.Этот параметр является обязательным только в том случае, если процесс выполняется от имени пользователя, отличного от пользователя, который выполнил вход в систему.Имя владельца процесса отображается в столбце "Имя пользователя" на вкладке "Процессы" диспетчера задач Windows.
Включает профилирование процессов в других сеансах.Этот параметр является обязательным, если приложение выполняется в рамках другого сеанса.Идентификатор сеанса отображается в столбце "Код сеанса" на вкладке "Процессы" диспетчера задач Windows.Для /crosssession может быть задано сокращение /CS.
/wincounter:WinCounterPath
Задает счетчик производительности Windows, данные которого следует собирать в процессе профилирования.
/automark:Interval
Используйте только с /wincounter.Задает интервал времени (в миллисекундах) между событиями сбора данных счетчика производительности Windows.Значение по умолчанию — 500 мс.
При необходимости запустите целевое приложение обычным образом.
Присоедините профилировщик к целевому приложению.Type:
VSPerfCmd /attach:{PID|ProcName} [/targetclr**:**Version]
PID определяет идентификатор процесса целевого приложения.Параметр ProcessName задает имя процесса.Обратите внимание, что если при заданном значении ProcessName выполняется несколько процессов с таким же именем, результаты будут непредсказуемыми.Диспетчер задач Windows позволяет просмотреть идентификаторы всех запущенных процессов.
**/targetclr:**Version задает версию среды CLR для профилирования, если в приложении загружено несколько версий среды выполнения.Необязательный.
Управление сбором данных
Когда выполняется целевое приложение, можно управлять сбором данных путем запуска и остановки записи данных в файл с помощью параметров VSPerfCmd.exe.Управление сбором данных позволяет собирать данные на различных этапах выполнения программы, например, при запуске или завершении работы приложения.
Запуск и остановка сбора данных
Следующие пары параметров используются для запуска и остановки сбора данных.Задайте каждый параметр в отдельной строке командной строки.Запуск и приостановка сбора данных могут выполняться неоднократно.
Параметр
Описание
Запускает (/globalon) или останавливает (/globaloff) сбор данных для всех процессов.
/processon:PID/processoff:PID
Запускает (/processon) или останавливает (/processoff) сбор данных для процесса с указанным значением PID.
/attach запускает сбор данных для процесса, определяемого идентификатором PID или именем процесса (ProcName)./detach останавливает сбор данных для указанного процесса или, если он не задан, для всех процессов.
Для добавления метки профилирования в файл данных можно также использовать параметр VSPerfCmd.exe/mark.Команда /mark добавляет идентификатор, отметку времени и необязательную определенную пользователем текстовую строку.Метки можно использовать для фильтрации данных.
Завершение сеанса профилирования
Чтобы завершить сеанс профилирования, необходимо отсоединить профилировщик от всех профилируемых процессов и явным образом завершить его работу.Чтобы отсоединить профилировщик от приложения, для которого выполнялось профилирование методом выборки, закройте приложение или выполните команду VSPerfCmd /detach.Затем для завершения работы профилировщика и закрытия файла данных профилирования используется параметр VSPerfCmd /shutdown.Команда VSPerfClrEnv /off удаляет значения переменных среды, используемые для профилирования.
Завершение сеанса профилирования
Чтобы отсоединить профилировщик от целевого приложения, выполните одно из следующих действий.
Введите VSPerfCmd /detach.
-или-
Закройте целевое приложение.
Завершите работу профилировщика.Type:
VSPerfCmd /shutdown
(Необязательно.) Удалите переменные среды, используемые для профилирования.Type:
VSPerfCmd /off
См. также
Основные понятия
Профилирование автономных приложений из командной строки
Другие ресурсы
Представления данных в памяти в средствах профилирования .NET