2010-12-19 1 views
1

J'essaye d'obtenir une couverture de code pour un composant que j'écris pour le navigateur Arora, qui est écrit en utilisant le framework C++ et Qt.Qt et gcov, les fichiers de couverture ne sont pas générés

Je ne suis pas capable d'utiliser le programme gcov, ni sous GNU/Linux ni sous Mac OS X. J'ai essayé tout ce que j'ai pu trouver sur Internet, en forçant automatiquement les choses à éditer le Makefile généré par le fichier .pro .

Quelqu'un peut-il m'aider s'il vous plaît? Ceci est mon fichier pro très simple:

TEMPLATE = app 
TARGET = 
DEPENDPATH += . 
INCLUDEPATH += . 
LIBS += -lgcov 
QMAKE_CXXFLAGS += -g -fprofile-arcs -ftest-coverage -O0 
QMAKE_LDFLAGS += -g -fprofile-arcs -ftest-coverage -O0 


include(../autotests.pri) 

# Input 
SOURCES += tst_quickview.cpp 
HEADERS += 

Le Makefile contient correctement les drapeaux. J'ai également essayé l'option --coverage. Mais rien ne se passe. Lorsque je lance l'exécutable, aucun fichier gcov n'est généré. Il n'y a aucune erreur et aucun avertissement. J'utilise le framework QTestLib.

Merci

+0

Pouvez-vous faire fonctionner gcov? Pouvez-vous le faire fonctionner sur un programme de test simple, indépendant de Qt, en utilisant seulement la ligne de commande par exemple? – Troubadour

+0

Yup, juste essayé et ça marche – dgraziotin

+0

Je veux dire, le programme de test simple fonctionne, pas celui sur lequel je travaille – dgraziotin

Répondre

1

Atleast dans les cas où j'ai eu des problèmes similaires, le problème a été dans les structures d'annuaire.

Le premier problème était/est qu'afin de générer les fichiers .gc * appropriés lors de l'exécution, le cache du compilateur doit être désactivé. Je n'ai jamais vraiment débogué le problème mais maintenant, je suppose que les fichiers gconv où infact placé dans le dossier cache du compilateur et pendant l'exécution des binaires instrumentés de couverture, binaire n'était pas capable d'identifier où les nouveaux fichiers de données devraient être générés.

question deuxième est/était que je devais exécuter les tests dans la même structure de répertoire comme ils où compilé. Par exemple, si j'avais compilé l'application dans «/home/foo/src/myproject/» et tous ses sous-répertoires .. L'exécution doit se produire dans la même structure de répertoires ou les fichiers de données ne sera pas générée ..

1

vous devriez au moins utiliser

QMAKE_LFLAGS += -g -fprofile-arcs -ftest-coverage -O0 

au lieu de

QMAKE_LDFLAGS += -g -fprofile-arcs -ftest-coverage -O0 

Je ne sais pas si cela va résoudre votre problème, mais QMAKE_LDFLAGS ne fera rien d'utile.

Questions connexes