2011-01-30 14 views
8

Estoy usando el compilador ubuntu 10.1, g ++.C++ ¿Cómo usar el problema de gcov y lcov?

Estoy tratando de usar gcov y lcov para mi proyecto de C++. Me las arreglé para compilar el gcov:

g++ -fprofile-arcs -ftest-coverage main.cpp user.cpp game.cpp 

No hay ningún error o mensaje de advertencia. A continuación, intento ejecutar gcov:

gcov main.cpp user.cpp game.cpp 

También está bien. También trato de ejecutar mi programa:

./a.out 

y corro gcov de nuevo, mi principal, el usuario y muestra algunos game.cpp porcentaje ahora. Quiero capturar los datos, escribo esto en el terminal:

lcov --directory /home/projects/Game1/ -c -o application.info 

pero me da esto:

Capturing coverage data from /home/projects/Game1/ 
geninfo: ERROR: cannot read /home/projects/Game1/! 

que busco por toda la web, leer la documentación lcov, no puedo encontrar las respuestas. ¿Alguien puede ayudarme?

Además, tampoco pude abrir el archivo main.gcda. (Intenté abrir usando el editor de texto, dice un problema de codificación de caracteres, bastante: UTF-8, Western (ISO-8859-1), Western . (ISO-8859-11), etc, pero todavía no puede abrir y leer el archivo

favor me ayude .. anyone ??

EDIT:

admito, es mi error (estoy terriblemente lo siento, "home/Projects/Game1" con mayúscula "P".) Después de verificar la ruta, recibí este nuevo error:

geninfo: ERROR: /home/Projects/Game1/main.gcno: reached unexpected end of file 
+1

¿Promete que el nombre del directorio está bien escrito y contiene su código y objetos? ¿Has intentado ejecutarlo en ese directorio como 'lcov --directory .'? – Cascabel

+0

He editado mi pregunta, tienes razón: mi estúpido "descuidado". Pero luego, el nuevo mensaje de error también me golpeó: geninfo: ERROR: /home/Projects/Game1/main.gcno: llegó al final inesperado del archivo –

+1

Tengo exactamente el mismo error, ¿acaso tuviste algo de suerte al final? – PierreBdR

Respuesta

12

Asegúrese de incluir -g bandera (información de depuración): -g -fprofile-arcs -ftest-coverage

Mientras trabajaba con lcov he encontrado que es mejor usar rutas absolutas en lugar de rutas relativas. Puede intentar usar lcov para capturar la fecha inicial de cobertura cero con -i, --inicial interruptor.

Aquí es un ejemplo de mi forma de zerocounters logrando

$ lcov --zerocounters --directory myFullPath 
$ lcov --capture --initial --directory myFullPath --output-file myOutputFile 

A continuación, ejecute el programa de y luego capturar los datos de cobertura:

$ lcov --no-checksum --directory myFullPath --capture --output-file myOutputFile 

Finaly lcov le permite generar un informe del html:

$ lcov/genhtml --highlight --legend --output-directory myOutPutHTMLdirectory myOutputFile 

Espero que esto te ayude.

-3

compilar el código usando:

lcov --directory . --output-file app.info 

continuación, utilizar el siguiente para hacer que las páginas HTML.

genhtml app.info 
+2

-1 'lcov' no compila el código,' genhmtml' debe ser 'genhtml'. – Kleist

2

que tenía exactamente el mismo problema. Y resultó que si el código de la biblioteca cambia mientras ya había ejecutado las pruebas de cobertura, a veces se confunde. La única forma de salir de él es eliminar los archivos que causan el error y volver a compilar.

+0

Esto solucionó mi problema también. Gracias. – Meysam

Cuestiones relacionadas