c – 在并行运行时使用gcov进行代码覆盖
发布时间:2020-12-16 07:34:55 所属栏目:百科 来源:网络整理
导读:我为项目中的几个文件设置了gcov的C/C++代码覆盖率. 可执行文件正在并行运行.这导致一些共享的代码段并行运行. 我收到了损坏的.da文件或零大小的.da文件.这是并行运行的问题吗? 因为两个或多个可执行实例试图在同一个.da文件上写入,以便为执行中的每个语句
我为项目中的几个文件设置了gcov的C/C++代码覆盖率.
可执行文件正在并行运行.这导致一些共享的代码段并行运行. 我收到了损坏的.da文件或零大小的.da文件.这是并行运行的问题吗? 因为两个或多个可执行实例试图在同一个.da文件上写入,以便为执行中的每个语句写入覆盖计数? 如果是这样,有没有解决方法? 正在使用的Gcov版本是1.5 解决方法
好吧,似乎你已经找到问题的根本原因并寻找解决方法.
我已经使用gcov成功配置了几个代码覆盖项目. 我想为你清楚一些事情: >我们在编译期间为每个使用–coverage选项检测的源文件获取.gcno文件. .gcno文件只是相关源代码文件的流程图结构. 因此,在您的情况下.gcda(在早期版本中曾经是.da)在两个或多个执行尝试同时写入相同的.gcda文件时会发生冲突. 最简单的解决方法是连续运行测试. (至少那是我的所作所为)您不必担心丢失覆盖率数据,因为.gcda会附加每次执行而不会被覆盖.请记住,您不必进行重新编译,因为它会更改.gcno文件,之前的.gcda文件将变得无用. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |