2011-02-10 12 views
6

Presenté un archivo por lotes para generar un archivo de cobertura de código como está escrito en este post.Ejecución por lotes de herramientas de cobertura de código VS

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

Sin embargo, recibí este mensaje de error cuando ejecuto el archivo por lotes.

enter image description here

tuve que correr vsperfcmd /shutdown manualmente para terminarlo. ¿Qué podría estar mal?

Respuesta

5

Esto es solo un problema de tiempo.

El comando start vsperfmon /coverage /output:run.coverage inicia vsperfmon.exe en un proceso separado.

Al mismo tiempo, el script se ejecuta hello. Si hello es un programa realmente simple, es posible que se ejecute y finalice antes de que vsperfmon.exe se ejecute y se inicialice por completo. Si su script acierta al vsperfcmd /shutdown antes de que el monitor esté en funcionamiento, obtendrá el error que está mostrando.

vsperfcmd es sólo un controlador/lanzador de vsperfmon, para que pueda utilizar esa exclusivamente en su archivo por lotes:

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

En este caso, la primera llamada a vsperfcmd se bloqueará hasta que el monitor está en marcha y totalmente corriendo.

+0

Gracias por la respuesta, y funciona como un encanto. ¿Podrías ayudarme con esta pregunta también? - http://stackoverflow.com/questions/4965173/generating-coverage-file-programmatic-way-with-visual-studio-2010 – prosseek

+0

Zam !!!!!!! "vsperfcmd es solo un controlador/iniciador para vsperfmon" era la pista que necesitaba. – granadaCoder

0

Para hacer esto para archivos ya instrumentados con una aplicación IIS Express: Obtener el nombre del sitio de 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 navegador probablemente lanzamiento automático. haga clic en su código, haga sus pruebas manuales.

continuación, para terminar

vsperfcmd /shutdown 
Cuestiones relacionadas