我使用的是ubuntu 10.1,g ++编译器.
我试图将gcov和lcov用于我的C++项目.我设法编译gcov:
g++ -fprofile-arcs -ftest-coverage main.cpp user.cpp game.cpp
Run Code Online (Sandbox Code Playgroud)
没有错误或警告消息.接下来我尝试运行gcov:
gcov main.cpp user.cpp game.cpp
Run Code Online (Sandbox Code Playgroud)
还好.我也尝试运行我的程序:
./a.out
Run Code Online (Sandbox Code Playgroud)
并再次运行gcov,我的主要用户和game.cpp现在显示一些百分比.我想捕获数据,我在终端输入:
lcov --directory /home/projects/Game1/ -c -o application.info
Run Code Online (Sandbox Code Playgroud)
但它给了我这个:
Capturing coverage data from /home/projects/Game1/
geninfo: ERROR: cannot read /home/projects/Game1/!
Run Code Online (Sandbox Code Playgroud)
我在网上搜索,阅读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
Run Code Online (Sandbox Code Playgroud)
Bla*_*ise 14
一定要包含-g标志(调试信息):-g -fprofile-arcs -ftest-coverage
在使用lcov时,我发现使用绝对路径而不是相对路径更好.您可以尝试使用lcov使用-i, - 初始开关捕获初始零覆盖日期.
这是我实现zerocounters的一个例子
$ lcov --zerocounters --directory myFullPath
$ lcov --capture --initial --directory myFullPath --output-file myOutputFile
Run Code Online (Sandbox Code Playgroud)
然后运行您的程序,然后捕获覆盖数据:
$ lcov --no-checksum --directory myFullPath --capture --output-file myOutputFile
Run Code Online (Sandbox Code Playgroud)
Finaly lcov使您能够生成html报告:
$ lcov/genhtml --highlight --legend --output-directory myOutPutHTMLdirectory myOutputFile
Run Code Online (Sandbox Code Playgroud)
希望这对你有所帮助.
| 归档时间: |
|
| 查看次数: |
21031 次 |
| 最近记录: |