1

我在 Ubuntu 12.04 上使用 gcov 作为我的 c++ 项目的代码覆盖工具(当前为 4.6.3,但很快将是 4.8),并且收到错误无法打开图形文件。这个错误是什么意思?以及如何摆脱它以便我可以看到我的代码覆盖率?

我见过这个问题的其他解决方案,最流行的是使用 clang ( gcov: cannot open graph file ) 而不是 gcc 但我不能切换编译器,我必须使用 gcc 所以这对我来说不是一个可行的解决方案。另外,关于 gcov 的文档说它应该与 gcc 一起使用。

另一个解决方案是修复一个配置文件(http://ubuntuforums.org/showthread.php?t=1547252),但我不确定这个用户在说什么配置文件,所以如果这也是我的问题,我不知道不知道怎么修

我的 .gcda 和 .gcno 文件正在我的 obj 目录中正确生成

除了进入我编译代码并执行 gcov *.c 的顶级目录之外,我还尝试了 gcov -o directory/to/obj *.c 和 gcov -o directory/to/obj *.gcda 和 gcov -o 目录/to/obj *.gcno

但这些解决方案都不起作用;我仍然收到无法打开图形文件的错误。

任何帮助或建议将不胜感激!

4

2 回答 2

1

上述问题是由于没有.gcda and .gcno file in the directory where your source code present.

所以我的建议是第 1 份one .gcda and .gcno file of particular .c file in your source code where your .c resides then execute gcov filename.c

如果你得到覆盖,然后如果不想从 obj 目录复制,那么尝试将你所有的 .gcda 和 .gcno 软链接到源代码,那么正如你所说的问题将得到解决

于 2013-10-24T18:21:11.933 回答
1

让我澄清一些你做错的事情。

首先:您总是试图在 obj 目录路径之后指定 *.gcda、*.gcno、*.c 等,这是完全错误的。您需要做的是将其指定为“-o path/to/obj/”(目录路径)

您甚至可以指定特定 c/c++ 源文件的 gcda 文件的路径,并在“-o”标志中指定 obj 目录的路径以获取该文件的报告。

如果您在报告中使用 gcovr 而不是 gcov,那么您可以通过使用“-r -root=ROOT”标志仅指定根目录(src 和 obj 上方的目录)来获取所有类型的报告。有关 gcovr 的详细信息,请参阅本用户指南

于 2017-02-24T06:53:51.367 回答