【发布时间】:2011-06-18 04:02:47
【问题描述】:
我使用的是 ubuntu 10.1,g++ 编译器。
我尝试在我的 C++ 项目中使用 gcov 和 lcov。我设法编译了 gcov:
g++ -fprofile-arcs -ftest-coverage main.cpp user.cpp game.cpp
没有错误或警告消息。接下来我尝试运行 gcov:
gcov main.cpp user.cpp game.cpp
也不错。我也尝试运行我的程序:
./a.out
再次运行 gcov,我的 main、user 和 game.cpp 现在显示了一些百分比。我想捕获数据,我在终端中输入:
lcov --directory /home/projects/Game1/ -c -o application.info
但它给了我这个:
Capturing coverage data from /home/projects/Game1/
geninfo: ERROR: cannot read /home/projects/Game1/!
我在网上搜索,阅读 lcov 文档,但找不到答案。谁能帮帮我?
另外,我也打不开main.gcda文件。(我尝试使用文本编辑器打开,它说一些字符编码问题,相当多:UTF-8,Western(ISO-8859-1),Western( ISO-8859-11) 等,但仍然无法打开和读取文件。
请帮帮我..有人吗?
编辑:
我承认,这是我的错误(非常抱歉,“home/Projects/Game1”大写“P”。) 验证路径后,我得到了这个新错误:
geninfo: ERROR: /home/Projects/Game1/main.gcno: reached unexpected end of file
【问题讨论】:
-
保证目录名称拼写正确并包含您的代码和对象?您是否尝试在该目录中以
lcov --directory .运行它? -
我编辑了我的问题,你是对的:我愚蠢的“粗心”。但是,新的错误信息也打败了我:geninfo: ERROR: /home/Projects/Game1/main.gcno:达到了文件的意外结尾
-
我也出现同样的错误,请问你最后运气好吗?
-
你只安装了一个 gcc 版本吗?我在将 g++4.7 安装到 Ubuntu 12.04 并默认安装时遇到了同样的问题,但是当我检查 gcov 版本时,它是 4.6。真正的 /usr/bin/gcov 只是 gcov-4.6 的符号链接,所以我尝试将其修复为 gcov-4.7,之后我从 bash 获得了正确的工作 gcov,但 lcov 的错误相同。我的解决方案是使用 g++4.6 而不是 g++(到 g++4.7 的符号链接)