gcov sur les grands projets (bibliothèques statiques, ...)
Je suis en train de travailler sur un projet plus vaste qui a le répertoire suivant la mise en page:
Source
MyA
aa.cpp
ab.cpp
ac.cpp
MyB
ba.cpp
bb.cpp
bc.cpp
MyTest
testaa.cpp
testab.cpp
testac.cpp
testba.cpp
testbb.cpp
testbc.cpp
main.cpp
Build
MyA
aa.o
ab.o
ac.o
libMyA.a (static library)
MyB
ba.o
bb.o
bc.o
libMyB.a (static library)
MyTest
testaa.o
testab.o
testac.o
testba.o
testbb.o
testbc.o
MyTest (executable)
Après compilation avec -fprofile-arcs -ftest-coverage
j'exécute les MyTest application à l'intérieur de la Construction/MyTest répertoire. Comme prévu il y a *.gcno et *.gcda les fichiers dans le répertoire de construction. Après l'exécution de gcov à l'intérieur de la MyTest répertoire différent *.gcov fichiers sont produits, mais malheureusement pas pour tout à l'intérieur de MyA et MyB, bien que chaque fonction est appelée à l'intérieur de ces deux bibliothèques. Essayé différentes options, mais de toute façon je suis incapable de créer utile (correct) *.gcov fichiers avec cette mise en page.
Si je copie tous les rpc à l'intérieur d'un répertoire et de répéter les étapes tout fonctionne comme prévu et l'analyse de la couverture est parfaite.
OriginalL'auteur azraiyl | 2011-04-07
Vous devez vous connecter pour publier un commentaire.
Vous devez spécifier les fichiers source des chemins absolus pour g++/gcc. Ne pas utiliser des chemins relatifs avec ".." ou "comme foo/bar.cpp" sinon vous aurez des erreurs comme "geninfo: AVERTISSEMENT: pas de données disponibles pour XXXX".
Ne comprend pas les fichiers d'en-tête sur la ligne de commande g++/gcc. D'autre que vous obtiendrez "timbre d'incompatibilité avec le graphique fichier" erreurs.
À la suite devrait fonctionner quand le fait d'avoir plusieurs répertoires:
Ou, si vous êtes dans un Makefile qui utilise des chemins relatifs déjà, il est pratique à utiliser:
lcov
avant.OriginalL'auteur Lasse Reinhold
Pour être en mesure de garder votre structure de répertoire, vous devez exécuter gcov une fois à l'intérieur de chaque dossier du fichier source, mais l'utilisation de la
-o
option pour dire gcov où les fichiers de données sont.Je pense qu'il devrait être comme ceci:
J'ai un projet avec une source similaire de la structure du fichier, mais je laisse le compilateur objet image fichiers etc ... dans les dossiers de la source. Je puis exécutez gcov plusieurs fois à partir du dossier racine, une fois pour chaque fichier source, mais je spécifier le chemin relatif du fichier source et de l'utilisation de la
-o
option pour spécifier le dossier relatif comme ceci:Je suis l'aide de scons pour construire le projet, donc je ne suis pas entièrement sûr, mais, oui, je pense que scons utilise des chemins relatifs pour les fichiers source.
OriginalL'auteur quamrana
Si vous avez effectué votre produit ou de l'application de test à fond et manuellement et dépensé beaucoup d'effort sur elle. Si votre objectif est d'obtenir rapport de couverture de code à l'aide de lcov et gcov mais par erreur supprimé gcno fichiers. Vous pouvez régénérer gcno des fichiers par de recompiler le code, mais il sera généré avec de nouveaux horodatage et gcov rapports d'erreur disant "timbre d'incompatibilité avec le graphique de fichier" et pas de rapport de couverture de code sera généré. Cela fera en sorte que tous les efforts de test se perdre.
Il y a un raccourci pour générer le rapport de couverture de code. C'est juste une solution temporaire et ne devrait pas être invoquée en tout temps. Il est recommandé de préserver *.gcno fichiers jusqu'à ce que votre test est terminé.
Note en bas de votre version de gcc(gcc-v) et de télécharger son code source à partir d'un des sites miroirs
Eg - ftp://gd.tuwien.ac.at/gnu/sourceware/gcc/releases/gcc-4.4.6/gcc-4.4.6.tar.bz2
Après avoir extrait le fichier téléchargé, gcc la structure de dossier sera comme suit
gcc-4.4.6
gcc-4.4.6/gcc
Si vous aller directement à l'intérieur de gcc-4.4.6/gcc et essayer de le faire ./configurer et compiler(make) à partir de là, puis vous rencontrerez au-dessous de problème
construire/genmodes -h > tmp-modes.h
/bin/sh: construire/genmodes: Aucun fichier ou répertoire de
Solution est de faire ./configurer et faire de gcc-4.4.6 et aucune erreur ne sera affiché liées à genmodes. Cela permettra de compiler tous les modules, y compris la gcc. Vous pourriez avoir à installer de mpfr et les modules requis par la gcc si aucune erreur affichée ./configurer
goto gcc-4.4.6/gcc/gcov.c et de commentaire ci-dessous des lignes, puis recompiler avec la commande ci-dessus
Exemple de chemin d'accès de nouvelle gcov binaire après compilation gcc-4.4.6/accueil-x86_64-unknown-linux-gnu/gcc/gcov
Lieu ce binaire dans /usr/bin et de régénérer le rapport de couverture de code avec la commande comme indiqué dans l'exemple ci-dessous
lcov --capture --répertoire ./--fichier de sortie coverage.info ; genhtml simplement coverage.info --output-répertoire /var/www/html/couverture
Maintenant, vous devriez ne pas avoir de "timbre d'incompatibilité avec le graphique de fichier d'erreur" et vous obtiendrez un rapport de couverture de code correctement
OriginalL'auteur Shadaksharayya H A