2012-12-19 4 views
5

Ich versuche gcov unter Linux (Ubuntu) zu verwenden, um die Häufigkeit der Ausführung für jede Zeile der Quelle zu sehen.gcov zeigt keine Coverage-Daten

Ich habe folgende Flags zu meinen gcc-Compiler und Linker-Flags hinzugefügt,

CCFLAGS = -fprofile-arcs -ftest-coverage 
LDFLAGS = -fprofile-arcs -lgcov 

aber nach dem Kompilieren und Ausführen des Programms, ich sehe keine * .gcda Datei erstellt. Als Folge davon, wenn ich laufen

gcov --object-directory <path to the *.gcno/*.gcda files> myfile.cpp 

Fehler Shows:

myfile.gcda:cannot open data file, assuming not executed 
File '../../../../../code/myfile.cpp' 
Lines executed:0.00% of 2625 

ich etwas fehle. Wie behebe ich das?

+0

Hat das Programm läuft erfolgreich zum Abschluss atleast sein? –

+0

Was bekommen Sie auch, wenn Sie 'strings compiled_prog | ausführen grep gcda'? –

+0

@Shawn - Es ist ein Service/Daemon, der nicht zurückkehrt. Also im Wesentlichen muss ich die ausführbare Datei im Terminal CTRL-C, um es zu stoppen. Beeinflusst dies das Verhalten von gcov? Ich weiß, gprof generiert keine Profiling-Daten für solche Prozesse, die nicht verlassen(). Hat gcov diese Begrenzung auch? – goldenmean

Antwort

0

stellen Sie sicher, die gcov und gcc sind von der gleichen Version hilft :), das, wo viele der Menschen nicht zu überprüfen.

$gcc --version 
gcc (GCC) 4.1.1 
Copyright (C) 2006 Free Software Foundation, Inc. 
This is free software; see the source for copying conditions. There is NO 
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 

$ find /usr/lib/gcc -name libgcov.a 
/usr/lib/gcc/x86_64-redhat-linux/4.1.1/32/libgcov.a 
/usr/lib/gcc/x86_64-redhat-linux/4.1.1/libgcov.a 
/usr/lib/gcc/x86_64-redhat-linux/3.4.6/32/libgcov.a 
/usr/lib/gcc/x86_64-redhat-linux/3.4.6/libgcov.a 

so die gcc-Version geladen haben sollte in der Liste der verfügbaren libgcov.a