Führen Sie gcov-tool mit c++ - compiler

Ich arbeite zum ersten mal mit der coverage-tool gcov zu analysieren, ein großes Projekt.
Ich habe einem Verzeichnis-Struktur wie diese:

    HW
     -FooHW1.cpp
     -FooHW1.h
     -FooHW2.cpp
     -FooHW2.h
     -...
     -Makefile.am
    Lib1
     -FooLib1.cpp
     -FooLib1.h
     -FooLib2.cpp
     -FooLib2.h
     -...
     -Makefile.am

    Lib2
     ...
     -Makefile.am
    Lib3
     ...
     -Makefile.am
    Main
     -main.cpp
     -main.h
     -Makefile.am

Jedes Verzeichnis hat seine eigenen Makefile erzeugt automake auf, erzeugt Abhängigkeiten und überhaupt, wo der compiler ist c++.

Da mein Ziel ist die Analyse der statement coverage wollte ich mit gcov hinzufügen der folgenden Zeilen in jedem Makefile.bin für die Erstellung meiner .gcno und .gcda-Dateien, um zu verwenden, gcov:

    AM_CXXFLAGS = -fprofile-arcs -ftest-coverage
    AM_LDFLAGS = -fprofile-arcs

Leider, auch wenn es kompiliert, es nicht schaffen (oder link) der mehreren *.o und beim aufrufen gcov in der Regel gibt mir die Fehlermeldung:

    undefined __gcov_init

Ich habe auch versucht susbtituing, nach http://gcc.gnu.org/onlinedocs/gcc/Debugging-Options.html#index-coverage-536, die oberen Anweisungen, um:

    AM_CXXFLAGS = --coverage
    AM_LDFLAGS = --coverage

aber es tut nicht den trick für mich.

Möchte ich angeben, dass dies die erste Erfahrung mit dem gcov-tool und im Umgang mit großen c++ Projekten.
Thaks für Ihre Hilfe.

  • Ich denke, dass Sie vergessen haben, verknüpfen Sie Ihren code mit lcov.
  • Nicht lcov nur ein grafisches front-Kopf für die gcov-tool? Ich bin wirklich unerfahren, so dass ich nicht bekommen, Ihre Anregung, können Sie mehr klar sein? danke!
  • Ja, ich kann schon verwirrend sein dieser. AM_LDFLAGS = --coverage sollte das tun, was ich meinte.
  • Ich habe Folgendes in das Makefile.bin: AM_CXXFLAGS = --coverage AM_LDFLAGS = --coverage AM_CFLAGS = -shared und es schafft endlich die *gcno-Dateien, konnte ich nicht wirklich testen, die insgesamt dazu führen, dass ich hatte einige andere Probleme, hoffe, es wird funktionieren. Danke!
InformationsquelleAutor gRomano | 2013-08-05
Schreibe einen Kommentar