Allgemeine Frage zu gcov



  • Hallo,

    ich möchte gern ein C++ - Programm testen (Code Coverage). Der Code des Hauptprogramms wird komplett überprüft, allerdings wird der Code einer Bibliothek gar nicht mit überprüft, obwohl diese auch entsprechend kompiliert wurde.

    Gibt es Möglichkeiten gcov bzw. die Option im Compiler so zu konfigurieren, dass man die Tiefe des Tests einstellen kann ?

    Wie kann man die Codeabdeckung von Bibliotheken überprüfen ?

    Ich danke euch sehr für Eure Hilfe 🙂



  • Lies mal Is it possible code coverage of a shared library using gcov?, also "--coverage" muß beim Linken hinzugefügt werden.



  • Hallo Th69,

    vielen Dank für deine Antwort. "--coverage" ist bereits mit angegeben.
    Ich arbeite in der QNX Momentics - IDE.

    Das ist die Ausgabe, die beim Build geliefert wird:

    C:\QNX650\host\win32\x86\usr\bin\make.exe -k CPULIST=x86 EXCLUDE_VARIANTLIST=g clean all CCOPTS+=-ftest-coverage -fprofile-arcs LDOPTS+=-ftest-coverage -fprofile-arcs LDOPTS+=-p --file=C:/Users/rhaubold/AppData/Local/Temp/QMakefile15029647120488436751450824695975.tmp 
    C:/QNX650/host/win32/x86/usr/bin/make.exe -j 1 -Cx86 -fMakefile clean
    make.exe[1]: Entering directory `U:/Workspace_HelloWorld_Projektarbeit2/HelloWorld/x86'
    C:/QNX650/host/win32/x86/usr/bin/make.exe -j 1 -Co -fMakefile clean
    make.exe[2]: Entering directory `U:/Workspace_HelloWorld_Projektarbeit2/HelloWorld/x86/o'
    C:/QNX650/host/win32/x86/usr/bin/rm -f  HelloWorld  *.pinfo *.o *.err *.map mapfile *.sym *.i   
    make.exe[2]: Leaving directory `U:/Workspace_HelloWorld_Projektarbeit2/HelloWorld/x86/o'
    make.exe[1]: Leaving directory `U:/Workspace_HelloWorld_Projektarbeit2/HelloWorld/x86'
    C:/QNX650/host/win32/x86/usr/bin/make.exe -j 1 -Cx86 -fMakefile all
    make.exe[1]: Entering directory `U:/Workspace_HelloWorld_Projektarbeit2/HelloWorld/x86'
    C:/QNX650/host/win32/x86/usr/bin/make.exe -j 1 -Co -fMakefile all
    make.exe[2]: Entering directory `U:/Workspace_HelloWorld_Projektarbeit2/HelloWorld/x86/o'
    C:/QNX650/host/win32/x86/usr/bin/qcc -Vgcc_ntox86 -c -Wc,-Wall  -O          -DNDEBUG   -I. -IU:/Workspace_HelloWorld_Projektarbeit2/HelloWorld/x86/o -IU:/Workspace_HelloWorld_Projektarbeit2/HelloWorld/x86 -IU:/Workspace_HelloWorld_Projektarbeit2/HelloWorld -IU:/Workspace_HelloWorld_Projektarbeit2/HelloLib -IC:/QNX650/target/qnx6/usr/include     -DBUILDENV_qss -ftest-coverage -fprofile-arcs U:/Workspace_HelloWorld_Projektarbeit2/HelloWorld/HelloWorld.cc 
    C:/QNX650/host/win32/x86/usr/bin/rm -f  U:/Workspace_HelloWorld_Projektarbeit2/HelloWorld/x86/o/HelloWorld
    C:/QNX650/host/win32/x86/usr/bin/qcc -Vgcc_ntox86  -lang-c++ -lang-c++ -ftest-coverage    -oU:/Workspace_HelloWorld_Projektarbeit2/HelloWorld/x86/o/HelloWorld    HelloWorld.o    U:/Workspace_HelloWorld_Projektarbeit2/HelloLib/x86/so/HelloLibrary.o   -L . -L U:/Workspace_HelloWorld_Projektarbeit2/HelloLib/x86/so -L C:/QNX650/target/qnx6/x86/lib -L C:/QNX650/target/qnx6/x86/usr/lib  -Wl,--rpath-link . -Wl,--rpath-link U:/Workspace_HelloWorld_Projektarbeit2/HelloLib/x86/so -Wl,--rpath-link C:/QNX650/target/qnx6/x86/lib -Wl,--rpath-link C:/QNX650/target/qnx6/x86/usr/lib    -lHelloLib    -ftest-coverage -fprofile-arcs -p 
    make.exe[2]: Leaving directory `U:/Workspace_HelloWorld_Projektarbeit2/HelloWorld/x86/o'
    make.exe[1]: Leaving directory `U:/Workspace_HelloWorld_Projektarbeit2/HelloWorld/x86'
    


  • Sorry, da kann ich dir nicht weiterhelfen, da ich den 'qcc'-Compiler (sowie die QNX IDE) nicht kenne.
    Ich habe jetzt nur auf die Schnelle QNX - Using Code Coverage gefunden, aber da stehen auch nur die 3 schon von dir angegeben Optionen drin.

    Dir geht es um die 'HelloLibrary.o' sowie die 'HelloLib.so', oder?

    Und wurde die 'HelloLib' denn auch mit den Compiler-Optionen erzeugt?



  • Ja genau.

    Die Bibliothek habe ich auch entsprechend mit der Option gebaut.

    Sie wird auch angezeigt, steht allerdings auf 0%, obwohl das Programm auch "Hallo Library" ausgibt - also den Code durchaus verwendet, der in ihr steht.

    Wer verwendet schon QNX ? 😉 Ich danke dir trotzdem für deine Hilfe 🙂


Anmelden zum Antworten