Пакетный запуск инструментов покрытия кода VS - PullRequest
6 голосов
/ 10 февраля 2011

Я создал командный файл для генерации файла покрытия кода, как написано в этом посте .

cl /Zi hello.cpp -link /Profile
vsinstr -coverage hello.exe
start vsperfmon /coverage /output:run.coverage
hello
vsperfcmd /shutdown

Однако, я получаю это сообщение об ошибке при запуске командного файла.

enter image description here

Мне пришлось запустить vsperfcmd /shutdown вручную, чтобы закончить. Что может быть не так?

Ответы [ 2 ]

5 голосов
/ 11 февраля 2011

Это просто проблема синхронизации.

Команда start vsperfmon /coverage /output:run.coverage запускает vsperfmon.exe в отдельном процессе.

Одновременно ваш сценарий продолжает выполняться hello.Если hello действительно простая программа, возможно, она выполняется и завершается до того, как vsperfmon.exe будет запущен и полностью инициализирован.Если ваш сценарий достигнет vsperfcmd /shutdown до того, как монитор будет запущен, вы получите сообщение об ошибке.

vsperfcmd - это просто контроллер / средство запуска для vsperfmon, так что вы можете использовать этотолько в вашем пакетном файле:

cl /Zi hello.cpp -link /Profile
vsinstr -coverage hello.exe
vsperfcmd /start:coverage /output:run.coverage
hello
vsperfcmd /shutdown

В этом случае первый вызов vsperfcmd будет блокироваться до тех пор, пока монитор не заработает и не заработает полностью.

0 голосов
/ 21 мая 2014

Чтобы сделать это для уже инструментированных файлов с приложением IIS Express: получите имя сайта из C:\Users\<your user>\Documents\IISExpress\config\applicationhost.config

vsperfcmd /start:coverage /output:run.coverage
"c:\Program Files (x86)\IIS Express\iisexpress.exe" /site:"<that thing you got from applicationhost.config>"

, браузер, скорее всего, запустится автоматически.кликните вокруг в своем коде, сделайте ваши ручные тесты.

затем закончите

vsperfcmd /shutdown
...