gcov: produrre .gcda uscita dalla libreria condivisa?
-
02-10-2019 - |
Domanda
E 'possibile produrre file di dati (file gcov .gcda
) eseguendo un eseguibile collegato ad una libreria condivisa costruita con l'opzione --coverage
?
In sostanza, ho la biblioteca principale composto da più file di c ++ compilati in una libreria condivisa e quindi una sottodirectory denominata "test" che contiene un programma di test che collegamenti da e mette alla prova la biblioteca principale. Tutto compila bene ei file .gcno
sono prodotti sia per i file di origine di libreria ei file di origine di prova. I file .gcda
sono prodotti solo per i file di origine di prova, però, ma ho davvero bisogno di loro per i file di origine effettivi che vengono compilati nella libreria condivisa.
Tutte le idee?
Ulteriori informazioni:
- E 'di codice C ++ tutto
- Il tutto viene costruire con gli script make generati da automake
- L'opzione --coverage è specificata per lib_la_CPPFLAGS e lib_la_LDFLAGS nella libreria condivisa Makefile.am
- L'opzione --coverage è specificata per AM_CPPFLAGS e AM_LDFLAGS in eseguibile di prova Makefile.am
- I file di origine di prova fanno uso di Google prova (un Unit Testing Framework C ++)
Soluzione
Alla fine ho risolto questo problema ottenere qualche aiuto dai ragazzi gcc. Vedere la discussione qui: http://gcc.gnu.org/ ml / gcc-help / 2010-09 / msg00130.html .
Si scopre che i file .gcda venivano messi nella directory .libs in quanto è lì che i file della libreria condivisa (.so) erano. Al fine di ottenere gcov per produrre l'output, ho dovuto spostare i file .gcda di un livello al punto in cui i file di origine erano.
Inoltre, ecco un filo simile in cui qualcun altro era in esecuzione in alcuni degli stessi problemi: può gcov accordo con oggetto condiviso? .