gpt4 book ai didi

无法让 gcov 生成任何覆盖率数据

转载 作者:行者123 更新时间:2023-11-30 16:14:28 25 4
gpt4 key购买 nike

无法使用我的 C/C++ Makefile 项目在 Windows 上使用 mingw32 的 googletest 获取 gcov 覆盖文件完整源代码位于https://github.com/rusefi/rusefi/tree/gcov/unit_tests

我有

USE_OPT += -fprofile-arcs -ftest-coverage
ULIBS += -lgcov --coverage```

我在 build\obj 文件夹中的 .o 文件旁边得到了 .gcno 文件

我执行 rusefi_test.exe,但没有看到包含覆盖率数据的新文件:(

nm rusefi_test.exe

确认 gcov 在我的二进制文件中

我已经在末尾添加了显式刷新

extern "C" void __gcov_flush();
__gcov_flush();

但我还是没有看到任何

90.00% of 10 source lines executed in file tmp.c

标准输出末尾的样式行

我尝试将 .exe 从 build 复制到 build\obj 文件夹,但这没有任何改进。

最佳答案

看来我的编译器与此有关!我已转移到一个简单的 HelloWorld.cpp 应用程序,并且根据编译器的不同,我要么获取运行时文件,要么不获取!

cygwin 中的“g++”生成的 main.exe 会生成运行时文件,而 cygwin 中的 x86_64-w64-mingw32-g++ 不会生成 main.gcda 文件!

与 cygwin 捆绑在一起的 x86_64-w64-mingw32-g++ 似乎受到影响,而直接从 mingw64 下载的 x86_64-w64-mingw32-g++ 似乎可以工作。

https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=854368他们说它已经关闭,但至少告诉我有时它与编译器本身有关:(

关于无法让 gcov 生成任何覆盖率数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57643813/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com