烦人的错误消息:无法合并以前的GCDA文件

Annoying error message: cannot merge previous GCDA file

本文关键字:合并 GCDA 文件 错误 消息      更新时间:2023-10-16

问题

我正在使用以下标志来生成我的 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文件来消除错误。

我遇到了同样的问题。我的解决方案是:

  1. 有一个常规Test.pro项目,该项目使用SUBDIRS将每个测试项目都作为子标记包括在内。

  2. 在每个测试子标记中我都有以下行 QMAKE_POST_LINK = rm -f "*.gcda"

这仅为刚刚重新链接的子标记删除 *.gcda文件。未修改的项目保留其 *.gcda文件。