Tag: gcov

在运行时转储gcov数据

我正在使用gcov为我正在处理的C项目收集代码覆盖率数据。 我知道一旦程序在完成后退出,gcov会转储代码覆盖率数据。 如何为长时间运行的进程收集gcov数据。 (比方说,我的程序是在永不关闭的服务器中运行的操作系统的内核 – 我需要为它收集代码覆盖率数据)。 是否有任何方法可以定期(例如,每1小时)或在特定事件中生成gcov转储代码覆盖率数据 – 如何触发gcov转储代码覆盖率数据(而不是在程序终止后等待gcov执行此操作)?

如何使用gcov / lcov生成fork()’d孩子的覆盖率报告?

我无法为我的项目生成覆盖率报告 – 看起来叉子之后的子进程中的线路从未被击中,尽管它们显然已经实际存在。 这是分叉部分的工作服报告 (结果与lcov + genhtml相同)和构建日志 。 该项目使用带有libtool的autotools进行构建,并将所有内容打包为静态库。 ( configure.ac , library makefile.am , tests makefile.am ) 我试图将覆盖标志添加到测试中,并且–coverage在CFLAGS中添加 – 但无济于事。 最让我烦恼的是我试图在一个简单的C文件上重现行为,如下所示: #include #include #include #include int main(void) { pid_t pid; if (!(pid = fork())) { puts(“In child”); } else { puts(“In parent”); waitpid(pid, NULL, 0); } return 0; } 使用以下shell会话: /bin/sh ./libtool –tag=CC –mode=compile […]

GCC的代码覆盖选项如何工作?

请考虑以下命令: gcc -fprofile-arcs -ftest-coverage main.c 它生成要由gcov使用的文件main.gcda,以生成覆盖率分析。 那么main.gcda是如何生成的? 仪器如何完成? 我可以看到检测代码吗?

使用gcov进行交叉配置,但忽略GCOV_PREFIX和GCOV_PREFIX_STRIP

我想使用GCOV进行代码覆盖,但测试将在另一台机器上运行。 因此,可执行文件中.gcda文件的硬连接路径将不起作用。 为了更改此默认目录,我可以使用GCOV_PREFIX和GCOV_PREFIX_STRIP env变量,如此处所述。 这是我使用的命令: $ export GCOV_PREFIX=”/foo/bar” $ export GCOV_PREFIX_STRIP=”3″ $ gcc main.c -fprofile-arcs -ftest-coverage $ strings a.out | grep gcda /home/calmarius/blahblah/main.c.gcda 路径保持不变。 有人有这方面的经验吗?

gcov内存不足/版本不匹配?

只是试图让gcov启动并运行,得到以下错误: $ gcov src/main.c -o build build/main.gcno:version ‘404*’, prefer ‘407*’ gcov: out of memory allocating 14819216480 bytes after a total of 135168 bytes 我正在使用clang / profile_rt来生成gcov需要的文件,我假设它可能与它有关。 但是,它正在我的另一台计算机上工作,所以我认为它可以以某种方式修复。