2011-02-10 13 views
6

Ho trovato un file batch per generare il file di copertura del codice come scritto in questo post.Gestione batch di strumenti di copertura del codice VS

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

Tuttavia, ho ricevuto questo messaggio di errore quando eseguo il file batch.

enter image description here

ho dovuto correre vsperfcmd /shutdown manualmente per finirlo. Cosa potrebbe essere sbagliato?

risposta

5

Questo è solo un problema di temporizzazione.

Il comando start vsperfmon /coverage /output:run.coverage avvia vsperfmon.exe in un processo separato.

Allo stesso tempo, il tuo script va avanti per eseguire hello. Se hello è un programma davvero semplice, è possibile che venga eseguito e completato prima che vsperfmon.exe sia in esecuzione e completamente inizializzato. Se il tuo script raggiunge vsperfcmd /shutdown prima che il monitor sia attivo e funzionante, visualizzerai l'errore che stai visualizzando.

vsperfcmd è solo un controller/lanciatore per vsperfmon, in modo da poter utilizzare tale esclusivamente nel file batch:

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

In questo caso, la prima chiamata a vsperfcmd bloccherà fino a quando il monitor è attivo e pienamente in esecuzione.

+0

Grazie per la risposta, e funziona come un fascino. Potresti aiutarmi anche a questa domanda? - http://stackoverflow.com/questions/4965173/generating-coverage-file-programmatic-way-with-visual-studio-2010 – prosseek

+0

Zam !!!!!!! "vsperfcmd è solo un controller/launcher per vsperfmon" era il suggerimento di cui avevo bisogno. – granadaCoder

0

di fare questo per i file già strumentati con un'applicazione IIS espresso: Prendi il nome del sito da 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>" 

un browser sarà probabilmente il lancio automatico. clicca in giro nel tuo codice, fai i tuoi test manuali.

poi per finire

vsperfcmd /shutdown 
Problemi correlati