C++ à l'Aide de gcov et lcov problème?
J'utilise ubuntu 10.1, compilateur g++.
Que j'essaie d'utiliser gcov et lcov pour mon projet de C++. J'ai réussi à compiler le gcov:
g++ -fprofile-arcs -ftest-coverage main.cpp user.cpp game.cpp
Il n'y a pas d'erreur ou un message d'avertissement. Ensuite, j'ai essayer de courir gcov:
gcov main.cpp user.cpp game.cpp
Bien aussi. J'ai aussi essayer de faire fonctionner mon programme:
./a.out
et exécuter gcov encore une fois, mon principal, l'utilisateur et l'game.cpp montre un certain pourcentage de maintenant. Je veux capturer des données, tapez ceci dans le terminal:
lcov --directory /home/projects/Game1/ -c -o application.info
Mais il me donne ceci:
Capturing coverage data from /home/projects/Game1/
geninfo: ERROR: cannot read /home/projects/Game1/!
Je recherche tout sur le web, lire lcov de la documentation, je ne peux pas trouver les réponses. Quelqu'un peut m'aider?
En plus, je n'arrivais pas à ouvrir la main.gcda fichier.(J'ai essayé de l'ouvrir à l'aide de l'éditeur de texte, il est dit que certains de codage de caractères problème, tout à fait beaucoup: UTF-8, Occidentale (ISO-8859-1), Occidental (ISO-8859-11), etc, mais encore cant ouvrir et lire le fichier.
Merci de m'aider..??
EDIT:
Je l'avoue, son mon erreur (je suis terriblement désolé, "home/Projets/Game1" capital "P".)
Après avoir vérifié le chemin, j'ai eu cette nouvelle erreur:
geninfo: ERROR: /home/Projects/Game1/main.gcno: reached unexpected end of file
lcov --directory .
?J'ai édité ma question, Vous avez raison: mon stupide "négligent". Mais alors, le nouveau message d'erreur me battre trop: geninfo: ERREUR: /home/Projets/Game1/main.gcno: atteint la fin de fichier inattendue
J'ai le même message d'erreur exactement, avez-vous eu de la chance en fin de compte?
Avez-vous une seule version de gcc est installé? J'ai eu le même problème lors de l'install g++4.7 pour Ubuntu 12.04 et de le faire par défaut, mais quand j'ai vérifié gcov version, il était de 4.6. Réel /usr/bin/gcov est juste un lien symbolique pour gcov-4.6, j'ai donc essayé de le fixer à gcov-4.7, après que j'ai eu le bon travail gcov de bash, mais la même erreur pour lcov. Ma solution a été d'utiliser g++au lieu de 4,6 g++ (lien symbolique vers g++4.7)
OriginalL'auteur cpp_noob | 2011-01-30
Vous devez vous connecter pour publier un commentaire.
Assurez-vous d'inclure -g drapeau (informations de débogage):
-g -fprofile-arcs -ftest-coverage
Tout en travaillant avec lcov j'ai trouvé qu'il est préférable d'utiliser des chemins absolus plutôt que les chemins d'accès relatifs. Vous pouvez essayer d'utiliser lcov de capture zéro initiale de la couverture date avec -i, --initial du commutateur.
Voici un exemple de ma façon de parvenir à zerocounters
Puis exécutez votre programme
et puis capturer les données sur la couverture:
Finalement lcov vous permet de générer des rapports html:
Espère que cela vous aide.
OriginalL'auteur Blaise
J'ai eu exactement le même problème. Et il s'est avéré que si le code de la bibliothèque des modifications pendant que vous avait déjà couru la couverture des tests, parfois, il devient confus. La seule façon de s'en sortir est de supprimer le fichier(s) à l'origine de l'erreur et de recompiler.
OriginalL'auteur PierreBdR
Compiler le code à l'aide de :
Puis utilisez la commande suivante pour faire des pages html.
lcov
ne pas compiler le code,genhmtml
devrait êtregenhtml
.OriginalL'auteur Aakash Anuj