我使用的是ubuntu 10.1,g ++编译器。
我尝试将gcov和lcov用于我的C ++项目。我设法编译gcov:
g++ -fprofile-arcs -ftest-coverage main.cpp user.cpp game.cpp
没有错误或警告消息。接下来我尝试运行gcov:
gcov main.cpp user.cpp game.cpp
也很好。我也尝试运行我的程序:
./a.out
再次运行gcov,我的主要用户和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
答案 0 :(得分:14)
请务必添加 -g 标记(调试信息):-g -fprofile-arcs -ftest-coverage
使用 lcov 时,我发现最好使用绝对路径而不是相对路径。您可以尝试使用lcov使用-i, - 初始切换来捕获初始零覆盖日期。
以下是我实现zerocounters的方法的一个例子
$ lcov --zerocounters --directory myFullPath
$ lcov --capture --initial --directory myFullPath --output-file myOutputFile
然后运行你的程序 然后捕获覆盖率数据:
$ lcov --no-checksum --directory myFullPath --capture --output-file myOutputFile
Finaly lcov使您能够生成html报告:
$ lcov/genhtml --highlight --legend --output-directory myOutPutHTMLdirectory myOutputFile
希望这会对你有所帮助。
答案 1 :(得分:2)
我有完全相同的问题。事实证明,如果库代码在您已经运行覆盖测试时发生了变化,有时会让人感到困惑。摆脱它的唯一方法是删除导致错误的文件并重新编译。
答案 2 :(得分:-3)
使用以下代码编译代码:
lcov --directory . --output-file app.info
然后使用以下内容制作html页面。
genhtml app.info