Pregunta sobre gcov, gcc – gcov no genera archivos gcda

4

Traté de ejecutar gcov con-fprofile-arcs & -ftest-coverage Y nada para enlazar.

Estaba dando este error: -

<code> hidden symbol `__gcov_init' in /home/mojave/tools/gcc-4.4.1/amd64/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.4.1/libgcov.a(_gcov.o) is referenced by DSO
</code>

y salidas del programa.

Comando para compilar-

<code>bsub -g /mojave/build/"DummyDate" -J compile-obj/linux24rhel3_x86_64_GCOV64/DXp.o -I -q DFM -S 8192 -R "(model==OPTERON_250)" '/usr/bin/time --format="          ...finished DXp [`hostname`] [%E s with %P CPU]"  /home/mojave/tools/gcc-4.4.1/amd64/bin/g++ -fPIC -Wall -Wno-deprecated -DTCL_8_5 -m64 -march=opteron -DLITTLE_ENDIAN_PLATFORM -DARCH=amd64 -DARCH_amd64 -DARCH_BITS=64 -DARCH_BITS_64 -fsigned-char -msse3 -D__DISABLE_MULTITHREAD__ -D_CPP_NUMERIC_LIMITS -mfpmath=sse,387 -mmmx -m3dnow -pipe -Dgcc -DLICENSE_ALWAYS_GOOD -I/home/mojave/tools/flexlm/include/v8.4 -DNO_SUPPORT_STABIE -DGCOV -I../dxpclient -I/home/mojave/tools/bzip2-1.0.2/amd64/include -I/home/mojave/tools/zlib-1.2.3/amd64/include -I/home/mojave/tools/tcltk8.5.2/amd64//include -I/home/mojave/tools/tcltk8.5.2/amd64//include -g -fprofile-arcs -ftest-coverage -DBUILD_DATE=\""UNSET"\" -DVERSION_NUMBER=\"Dum.Dum.Dum.Dummy\" -DEXT_VERSION_NUMBER=\"Dum.Dum.Dum.Dummy\" -DLAST_RELEASE_VERSION=\"1.1614\" -Wreturn-type -DTCL_8_5 -DGOOGLE_MALLOC -L../dx/linux24rhel3_x86_64_GCOV64/ -ldx -o obj/linux24rhel3_x86_64_GCOV64/DXp obj/linux24rhel3_x86_64_GCOV64/DXp.o -Wl -lgcov /home/mojave/tools/zlib-1.2.3/amd64/lib/libz.a  -L/home/mojave/tools/bzip2-1.0.2/amd64/lib -lbz2    -ldl'
</code>

Cualquier ayuda será apreciada con un voto arriba.

Gracias.

¿Nos puede mostrar el Makefile o la cadena de compilación? Es muy posible que esté adjuntando las banderas de perfil a un objeto de destino incorrecto. Shrey

Tu respuesta

3   la respuesta
0

como se mencionó anteriormente porcrazy_prog, compruebe el "camino". Al tomar la cobertura usando lcov / gcov, la ruta juega un papel importante.

Por lo tanto, la ruta en la que ha creado el binario (cadena de ruta completa) y la ruta en la que está ejecutando el binario debe ser exactamente la misma.

Para mi propósito, ya que la creación del binario y la ejecución del binario se encuentran en diferentes lugares (uno en el entorno de desarrollo y otro en la placa real), por lo que al usar el enlace de enlace / acceso directo, creo una ruta similar y, por tanto, ejecuto el ejecutable. Finalmente, uno puede generar el informe en el entorno de desarrollo (por lo general, dado que la plataforma real a bordo podría no tener soporte para herramientas lcov).

0

si envío un término sig kill o sig a mi programa, SOLO SE HACEN ARCHIVOS GCNO, no hay archivos gcda.

9

-fprofile-arcs y-ftest-coverage. Enlazar con-lgcov Durante la generación de objeto compartido. Funcionará.

También puedes usar--coverage Opción como sinónimo de los tres pasos.

Mirar:opciones de instrumentación gcc para más información

@ naive231 Personalmente tuve este problema porque tenía un bucle infinito para (;;) al final de mi método principal. El programa necesita salir para que los archivos gcda se generen correctamente. user3062913
Intento estos comandos pero todavía no hay ningún archivo gcda:g++ -fprofile-arcs -ftest-coverage -lgcov main.cpp  ¿Echo de menos algo más? naive231
Nota: utilizando--coverage tanto para compilar como para enlazar se traduce automáticamente a las banderas que das. Esta es una conveniencia ofrecida por gcc para facilitar las cosas. También a prueba de futuro. Disfrutar Offirmo

Preguntas relacionadas