Pergunta sobre gcov, gcc – gcov não gerando arquivos gcda

4

Eu tentei rodar o gcov com-fprofile-arcs & -ftest-coverage e nada para ligar.

Foi dando esse erro: -

<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>

e sair do 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>

Qualquer ajuda será apreciada com o voto para cima.

Obrigado.

Você pode nos mostrar o Makefile ou a string de compilação? É bem possível que você esteja anexando as sinalizações de perfil ao objeto alvo incorreto. Shrey

Sua resposta

3   a resposta
0

Acabei de descobrir, se eu enviar um sig sig ou termo sig para o meu programa, apenas arquivos GCNO são feitos, sem arquivos gcda.

0

Depois de considerar a sinalização de compilação, como mencionado acima porcrazy_prog, verifique o "caminho". Ao tomar a cobertura usando lcov / gcov, o caminho desempenha um papel importante.

Portanto, o caminho no qual você criou o binário (string de caminho completo) e o caminho no qual você está executando o binário deve ser exatamente o mesmo.

Para o meu propósito, desde a criação do binário e execução do binário é em locais diferentes (um em ambiente de desenvolvimento e outro no quadro real), então usando o softlink / atalhos, eu criar caminho semelhante e, portanto, executar o executável. Finalmente, pode-se gerar o relatório no ambiente de desenvolvimento (geralmente, uma vez que a plataforma real a bordo pode não ter suporte a ferramentas lcov).

9

Ajuntar com-fprofile-arcs e-ftest-coverage. Conectado com-lgcov durante a geração do objeto compartilhado. Vai funcionar.

Você também pode usar--coverage opção como sinônimo para as três etapas

Olhe para a:opções de instrumentação gcc Para maiores informações

Eu tento esses comandos, mas ainda não há arquivo gcda:g++ -fprofile-arcs -ftest-coverage -lgcov main.cpp  Eu sinto falta de mais alguma coisa? naive231
Nota: usando--coverage tanto para compilar quanto para vincular automaticamente se traduz nas flags que você dá. Esta é uma conveniência oferecida pelo gcc para facilitar as coisas. Também à prova do futuro. Apreciar ! Offirmo
@ Naive231 Eu pessoalmente estava tendo esse problema porque eu tinha um loop infinito (;;) no final do meu método principal. O programa precisa sair para que os arquivos gcda sejam gerados corretamente. user3062913

Perguntas relacionadas