2012-12-19 13 views
5

Próbuję użyć gcov na Linux (Ubuntu), aby zobaczyć częstotliwość wykonywania dla każdego wiersza źródła.gcov nie pokazuje żadnych danych pokrycia

Dodałem następujące flagi do mojego kompilator gcc i flagi łącznikowych,

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

ale po kompilacji i uruchomieniu programu, nie widzę * .gcda plik utworzony. W wyniku czego, gdy biegnę

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

Pokazuje błędzie:

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

jestem brakuje czegoś. Jak to naprawić?

+0

Czy program prowadzony z powodzeniem do końca? –

+0

Co otrzymasz, gdy uruchomisz 'struny compiled_prog | grep gcda'? –

+0

@Shawn - Jest to usługa/demon, który nie zwraca. Zasadniczo mam do CTRL-C plik wykonywalny w terminalu, aby go zatrzymać. Czy to wpływa na zachowanie gcov. Wiem, że gprof nie generuje danych profilowania dla takich procesów, które nie wychodzą(). Czy gcov również ma to ograniczenie. – goldenmean

Odpowiedz

0

upewnij się gcov i GCC są tej samej wersji :), to gdzie wielu ludzi nie do sprawdzenia.

$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 

więc gcc wersja załadowaniu powinna być conajmniej w dostępnym wykazie libgcov.a

Powiązane problemy