C++使用gcov和lcov问题?

cpp*_*oob 8 c++ gcov lcov

我使用的是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)

希望这对你有所帮助.