c++ gcc code-coverage automake gcov

c++ - gcov: produciendo salida.gcda desde una biblioteca compartida?



gcc code-coverage (1)

Finalmente resolví este problema al obtener ayuda de los chicos de gcc. Vea el hilo aquí: http://gcc.gnu.org/ml/gcc-help/2010-09/msg00130.html .

Resulta que los archivos .gcda se estaban colocando en el directorio .libs ya que ahí es donde estaban los archivos de la biblioteca compartida (.so). Para que gcov produjera la salida, tuve que mover los archivos .gcda un nivel a donde estaban los archivos de origen.

Además, aquí hay un hilo similar en el que otra persona se encontraba con algunos de los mismos problemas: ¿ puede gcov lidiar con un objeto compartido? .

¿Es posible producir archivos de datos gcov (archivos .gcda) ejecutando un ejecutable vinculado a una biblioteca compartida construida con la opción --coverage?

Básicamente, tengo la biblioteca principal que consta de varios archivos c ++ compilados en una biblioteca compartida y luego un subdirectorio llamado "prueba" que contiene un programa de prueba que enlaza y prueba la biblioteca principal. Todo se compila bien y los archivos .gcno se producen tanto para los archivos fuente de la biblioteca como para los archivos fuente de prueba. Sin embargo, los archivos .gcda solo se producen para los archivos de origen de prueba, pero realmente los necesito para los archivos de origen reales que se compilan en la biblioteca compartida.

¿Algunas ideas?

Información adicional:
- Es todo el código C ++
- Todo se está construyendo con los scripts de make generados por automake.
- La opción --coverage se especifica para lib_la_CPPFLAGS y lib_la_LDFLAGS en la biblioteca compartida Makefile.am
- La opción --coverage se especifica para AM_CPPFLAGS y AM_LDFLAGS en el ejecutable de prueba Makefile.am
- Los archivos de origen de prueba hacen uso de Google Test (un marco de prueba de unidades de C ++)

Edición: problema de espaciado fijo