gcov generiert keine gcda-Dateien

Ich habe versucht, mit gcov zu rennen-fprofile-arcs & -ftest-coverage und nichts zum verlinken.

Es gab diesen Fehler: -

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

und Programmausgänge.

Befehl zum Kompilieren

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

Jede Hilfe wird mit Abstimmung geschätzt.

Vielen Dank.

 Shrey02. Mai 2012, 09:09
Können Sie uns das Makefile oder den Kompilierungsstring zeigen? Es ist durchaus möglich, dass Sie die Profilflags an ein falsches Zielobjekt anhängen.

Antworten auf die Frage(3)

crazy_progÜberprüfen Sie den "Pfad". Bei der Erfassung mit lcov / gcov spielt der Pfad eine wichtige Rolle.

Daher sollten der Pfad, unter dem Sie die Binärdatei erstellt haben (vollständige Pfadzeichenfolge), und der Pfad, unter dem Sie die Binärdatei ausführen, genau gleich sein.

Da sich die Erstellung der Binärdatei und die Ausführung der Binärdatei an unterschiedlichen Stellen befinden (eine in der Entwicklungsumgebung und eine in der tatsächlichen Karte), erstelle ich für meinen Zweck mithilfe der Softlinks / Verknüpfungen einen ähnlichen Pfad und führe die ausführbare Datei aus. Schließlich kann man den Bericht in der Entwicklungsumgebung generieren (normalerweise, da die aktuelle Plattform an Bord möglicherweise keine Unterstützung für lcov-Tools hat).

Lösung für das Problem

Kompilieren mit-fprofile-arcs und-ftest-coverage. Verbinden mit-lgcov während der Erzeugung eines gemeinsamen Objekts. Es wird klappen.

Auch du darfst verwenden--coverage Option als Synonym für alle drei Schritte

Ansehen:gcc instrumentation options für mehr Informationen

 user306291330. Mai 2017, 19:04
@ naive231 Ich persönlich hatte dieses Problem, weil ich am Ende meiner Hauptmethode eine Endlosschleife für (;;) hatte. Das Programm muss beendet werden, damit die gcda-Dateien korrekt generiert werden.
 naive23123. Mai 2016, 05:16
Ich probiere diese Befehle aber immer noch keine gcda-Datei aus:g++ -fprofile-arcs -ftest-coverage -lgcov main.cpp  Vermisse ich noch etwas?
 Offirmo10. Okt. 2012, 17:01
Hinweis: mit--coverage Sowohl beim Kompilieren als auch beim Verknüpfen werden die von Ihnen angegebenen Flags automatisch übersetzt. Dies ist eine Annehmlichkeit, die von gcc angeboten wird, um die Dinge einfacher zu machen. Auch zukunftssicher. Genießen !

dass, wenn ich ein Sig Kill oder Sig Term an mein Programm sende, NUR GCNO-DATEIEN GEMACHT werden, keine gcda-Dateien.

Ihre Antwort auf die Frage