c++ - 无法用gcc打开图形文件gcov

标签 c++ gcc profiling ubuntu-12.04 gcov

我在 Ubuntu 12.04 上使用 gcov 作为我的 c++ 项目的代码覆盖工具和 gcc(目前是 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 目录/to/obj *.c 和 gcov -o 目录/to/obj *.gcda 和 gcov -o 目录/to/obj *.gcno

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

如有任何帮助或建议,我们将不胜感激!

最佳答案

上述问题是由于您的源代码所在的目录中缺少.gcda 和.gcno 文件

所以我的建议是在你的 .c 所在的源代码中第一次复制 一个特定 .c 文件的 .gcda 和 .gcno 文件,然后执行 gcov filename.c

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

关于c++ - 无法用gcc打开图形文件gcov,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19412365/

相关文章:

c++ - 使用 GetFunctionInfo 从 FunctionID 获取函数的名称

c++ - 比较器功能如何在Priority Queue C++ STL中工作?

c++ - 直接在 foreach 循环中强制转换

c - gcc: 错误:请求成员 ‘rlen’ 不是结构或 union

docker - 在 Ubuntu 17.10 docker 容器上使用 gcc 的 Address Sanitizer 失败

java - 使用 perf 进行分析时,JMH 给出 <not counted> 值

c++ - 邻接链表C++展示

C++:如何将字符串中的每个字符转换为相应的字符?

c - 为什么我的非常简单的 makefile 不起作用

c# - 在 Mac 上分析 .net core 应用程序?