¿Cuáles son sus consejos para interpretar la salida de gcov para mejorar la cobertura?

Estoy usando gcov con éxito en mi proyecto:

Puedo construir mi proyecto con banderas gcov:-fprofile-arcs -ftest-coverage Enlace con la-lgcov opcióYo ejecuto mi programa de prueba de unidad y muchasgcda ygcnoe producen @ archivos.Yo ejecuto gcov muchas veces y muchasgcove producen @ archivos. Resumo los resultados y produzco una lista de líneas como esta:#####: 42: virtual double run_time() const { return 0; }

Entonces me voy 'doh!' y escriba una prueba que llame a ese método faltante.

La línea de ejemplo anterior es bastante fácil de diagnosticar: gcov me dijo el método exacto que no estaba llamando.

También he tenido un ejemplo de un constructor de copias marcado por gcov, pero puedo pasarlo usando mi depurador de Visual Studio. La solución fue darse cuenta de que gcov sufría de RVO que eludía la copia, pero al escribir una prueba que forzó una copia, se solucionó eso.

Tengo un par de otros ejemplos que no puedo entender:

1.
File.cpp
#####: 78:}

gcov parece estar marcando la llave de un espacio de nombres que es la última línea de un archivo.

2.
File.h
#####: 33:  class FooBase: public IResult {

¿Qué está tratando de decirme gcov aquí? No puedo pensar en una llamada para hacer aquí.
Actualización 1: He detectado queFooBase tiene un constructor predeterminado, que si solo 'llamado' por una subclase no es lo mismo que llamarlo instanciando, hastagcov está preocupado.

Actualización 2: He estado usandodjgpp/gcc 4.4.4 que produjo los resultados anteriores. Sin embargo, al usarMinGW/gcc 4.5.2 las 'aberraciones' desaparecen y con un poco más de trabajo he podido llegar al 100% de cobertura de línea.

Por favor escriba sus respuestas con un solo consejo para el usuario incauto de gcov, o con una respuesta a uno de mis ejemplos.

Respuestas a la pregunta(3)

Su respuesta a la pregunta