2010-09-14 22 views
19

È possibile produrre file di dati gcov (file .gcda) eseguendo un eseguibile collegato a una libreria condivisa costruita con l'opzione --coverage?gcov: produce output .gcda dalla libreria condivisa?

Fondamentalmente, ho la libreria principale costituita da più file C++ compilati in una libreria condivisa e quindi una sottodirectory chiamata "test" contenente un programma di test che collega e verifica la libreria principale. Tutto viene compilato correttamente e i file .gcno vengono prodotti sia per i file di origine della libreria sia per i file di origine del test. I file .gcda sono prodotti solo per i file sorgente di test, ma ho davvero bisogno di questi per i file sorgente reali che sono stati compilati nella libreria condivisa.

Qualche idea?

Ulteriori informazioni:
- E 'tutto codice C++
- 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 quadro C++ Unit Testing)

Edit: fisso problema spaziatura

risposta

20

Ho finalmente risolto questo problema ottenendo un 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 inseriti nella directory .libs poiché erano i file della libreria condivisa (.so). Per fare in modo che gcov producesse l'output, ho dovuto spostare i file .gcda di un livello fino a dove erano i file di origine.

Inoltre, ecco un thread simile in cui qualcun altro ha riscontrato alcuni degli stessi problemi: can gcov deal with shared object?.

+5

Inoltre, scusa per aver risposto alla mia domanda e accettandola, ma è rimasta qui per giorni senza l'aiuto di nessuno. – deuberger

+6

Sto anche iniziando a lavorare con gcov e le librerie condivise, e trovare la tua risposta e il thread di gcc-help di riferimento saranno utili. È un buon motivo per rispondere alla tua stessa domanda. – Tom

+2

@ Tom: Grazie, sono contento che questo sia utile. Dovrei anche notare che gcov ha un'opzione -o (--object-direct) che può essere usata anche per specificare la posizione dei file .gcda. – deuberger

Problemi correlati