Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/161.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
多进程覆盖率报告 我试图监视我的C++项目的代码覆盖率。正如我在前一个问题中所说的,我需要使用协同程序和其他高级C++2a特性,所以我使用clang++来编译它。我发现在使用clang++编译时可以使用-coverage标志(显然,还有-O0和-g)_C++_Code Coverage_Clang++_Llvm Cov - Fatal编程技术网

多进程覆盖率报告 我试图监视我的C++项目的代码覆盖率。正如我在前一个问题中所说的,我需要使用协同程序和其他高级C++2a特性,所以我使用clang++来编译它。我发现在使用clang++编译时可以使用-coverage标志(显然,还有-O0和-g)

多进程覆盖率报告 我试图监视我的C++项目的代码覆盖率。正如我在前一个问题中所说的,我需要使用协同程序和其他高级C++2a特性,所以我使用clang++来编译它。我发现在使用clang++编译时可以使用-coverage标志(显然,还有-O0和-g),c++,code-coverage,clang++,llvm-cov,C++,Code Coverage,Clang++,Llvm Cov,与可执行文件一起,这将生成一个.gcno文件,其中包含可执行文件的映射。运行可执行文件时,将生成一个附加的.gcda文件,其中包含实际的分析数据 我注意到,如果我多次运行可执行文件,覆盖率输出会很好地正确地合并到.gcda文件中,这非常好 现在,我想知道同时运行可执行文件的多个实例是否安全 在任何人建议按顺序运行测试之前:我按顺序运行它们,但我的应用程序使用了大量网络,并且一些测试需要多个实例来一起通信(我使用Docker模拟网络,使用netem获得某种真实的链接场景) 同时运行同一可执行文件的

与可执行文件一起,这将生成一个
.gcno
文件,其中包含可执行文件的映射。运行可执行文件时,将生成一个附加的
.gcda
文件,其中包含实际的分析数据

我注意到,如果我多次运行可执行文件,覆盖率输出会很好地正确地合并到
.gcda
文件中,这非常好

现在,我想知道同时运行可执行文件的多个实例是否安全

在任何人建议按顺序运行测试之前:我按顺序运行它们,但我的应用程序使用了大量网络,并且一些测试需要多个实例来一起通信(我使用Docker模拟网络,使用netem获得某种真实的链接场景)


同时运行同一可执行文件的多个实例会导致任何问题吗?我可以想象,如果实现了任何锁定机制,覆盖率数据将安全地、自动地写入
.gcda
文件,如果其他可执行文件需要执行转储,它们将等待锁释放。然而,我找不到任何地方可以保证这种情况确实发生。

自Clang 7以来,GCOV评测应该是多进程安全的

在Clang6中有两个bug阻止了它的工作,并且,但是它们现在已经被修复了

事实上,我们目前正在使用它来收集Firefox的覆盖率数据,这是一个多进程的过程。我们在Firefox中都有多个进程,我们还并行运行测试(针对某些特定的测试套件)