我在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目录/到/ obj * .c和gcov -o目录/到/ obj * .gcda和gcov -o目录/ to / obj * .gcno
但这些解决方案都不起作用;我仍然得到无法打开图形文件的错误 .
任何帮助或建议将不胜感激!
2 回答
上述问题是由于缺少
.gcda and .gcno file in the directory where your source code present
.所以我的建议是第一份
one .gcda and .gcno file of particular .c file in your source code where your .c resides then execute gcov filename.c
.如果你获得了覆盖,那么尝试将所有.gcda和.gcno软链接到源代码,如果不想从obj目录复制那么你说的问题将被解决
让我澄清一些你做错的事情 .
第一:你总是试图在obj目录路径之后指定* .gcda,* .gcno,* .c等,这是完全错误的 . 你需要做的是将其指定为“-o path / to / obj /”(目录路径)
您甚至可以指定该特定c / c源文件的gcda文件的路径,并在“-o”标志中指定obj目录的路径以获取该文件的报告 .
如果您使用gcovr而不是gcov作为报告,那么您可以通过使用"-r -root=ROOT"标志仅指定根目录(src和obj上方的目录)来获取所有类型的报告 . 有关gcovr的详细信息,请参阅此用户guide .