2011-02-10 30 views
6

Wyszukałem plik wsadowy, aby wygenerować plik pokrycia kodu, jak zapisano w tym post.Praca wsadowa narzędzi pokrycia kodu VS

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

Jednak otrzymałem ten komunikat o błędzie podczas uruchamiania pliku wsadowego.

enter image description here

musiałem uruchomić vsperfcmd /shutdown ręcznie, aby ją zakończyć. Co może być nie tak?

Odpowiedz

5

To tylko kwestia czasu.

Komenda start vsperfmon /coverage /output:run.coverage uruchamia narzędzie vsperfmon.exe w oddzielnym procesie.

Jednocześnie twój skrypt uruchamia się hello. Jeśli hello jest naprawdę prostym programem, możliwe, że jest on wykonywany i kończy się, zanim uruchomi się vsperfmon.exe i zostanie w pełni zainicjalizowany. Jeśli Twój skrypt trafi vsperfcmd /shutdown przed uruchomieniem monitora, pojawi się błąd, który wyświetlasz.

vsperfcmd jest tylko kontroler/wyrzutnia dla vsperfmon, dzięki czemu można używać tego wyłącznie w pliku wsadowym:

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

W tym przypadku, pierwsze wywołanie vsperfcmd zablokuje aż monitor jest gotowy do pełni bieganie.

+0

Dzięki za odpowiedź, i to działa jak czar. Czy możesz mi pomóc również w tym pytaniu? - http://stackoverflow.com/questions/4965173/generating-coverage-file-programmatic-way-with-visual-studio-2010 – prosseek

+0

Zam !!!!!!! "vsperfcmd to tylko kontroler/program uruchamiający dla vsperfmon" było wskazówką, której potrzebowałem. – granadaCoder

0

Aby to zrobić, bo już oprzyrządowanych plików z aplikacji IIS Express: Pobierz nazwę witryny z 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>" 

przeglądarkę prawdopodobnie rozpocznie auto. klikaj w swoim kodzie, wykonuj testy manualne.

następnie zakończyć

vsperfcmd /shutdown 
Powiązane problemy