烦人的错误消息:无法合并以前的GCDA文件
Annoying error message: cannot merge previous GCDA file
问题:
我正在使用以下标志来生成我的 QT 应用程序(.pro
文件)的代码覆盖范围:
QMAKE_CXXFLAGS += --coverage
QMAKE_LFLAGS += --coverage
正确生成了代码覆盖范围,问题是,如果我只想运行一个测试功能/类(并且已经创建了 gcda 文件),我会收到以下错误消息:
profiling: /Users/user/.../build-myapp/myclass.gcda: cannot merge previous GCDA file: corrupt arc tag (0x00000000)
请注意,每个 gcda 文件显示错误消息。另外,请注意,它似乎不会影响测试用例。
workaround :
如下所述,它" 是构建工具未能将当前结果合并到现有的.GCDA覆盖范围文件的结果"。正如问题所回答的那样,一个选项是在运行测试之前删除GCDA文件。例如,通过在构建阶段添加以下命令:
find . -name "*.gcda" -print0 | xargs -0 rm
问题:
我的问题是,每次运行测试用例时,我都不想删除旧的GCDA文件。由于我只运行一个测试功能/类,因此我想保持旧的GCDA文件,仅合并与当前类有关的GCDA文件。当我手动检查时,它已经完成了,因为我当前课程的覆盖范围已更新,并且旧的覆盖范围保持不变。
那么,是否有命令可以忽略(不显示)与GCDA合并问题有关的错误消息?甚至更好的是,仅更新与当前测试类有关的GCDA文件?
NOTE :我在Macos Sierra上使用QT 5.3.2与Clang。
相关问题:
- 代码覆盖范围警告垃圾邮件输出
- 如何合并多个版本的GCDA文件?
- .gcda文件不在多个运行上合并
进行分析时,每个运行的结果都存储在以 .gcda
结尾的文件中。
当您现有的.gcda
文件的格式与刚刚运行的当前程序不同时出现错误。
当我运行Linux版本的可执行文件时,这发生在我身上,然后重新编译MacOS并运行它。MACOS程序看到了现有的.gcda
文件和错误的错误页面。
通过删除现有的.gcda
文件来消除错误。
我遇到了同样的问题。我的解决方案是:
-
有一个常规
Test.pro
项目,该项目使用SUBDIRS
将每个测试项目都作为子标记包括在内。 -
在每个测试子标记中我都有以下行
QMAKE_POST_LINK = rm -f "*.gcda"
这仅为刚刚重新链接的子标记删除 *.gcda文件。未修改的项目保留其 *.gcda文件。
- 使用C++程序合并排序没有得到正确的输出
- 用于合并排序的合并函数
- 在声明中合并两个常量"std::set"(不是在运行时)
- 如何将一个数组值合并为一个整数c++
- 如何将不同的可执行文件合并到一个窗口框架中进行编码?像浏览器一样
- 将向量的 N 段合并到位C++
- 在C++中合并两个库
- 以迭代方式合并标准::unordered_map
- 无法合并生成操作.. 先决条件不同
- 合并排序不排序自创建数组类 c++
- 合并文本文件不同行中的重复项
- 找不到标识符合并
- 仅在大型阵列上出现合并排序分段错误
- C++ 合并字符串以'system'函数错误
- 为什么在排序链表上的这种合并实现总是将两个列表都设置为 NULL,而只有一个应该设置一个列表?
- C++合并排序可视化工具
- 合并一组模板专用化
- 烦人的错误消息:无法合并以前的GCDA文件
- 如何合并多个版本的 gcda 文件
- .gcda 文件在多次运行时不会合并