当我使用GCC v10(arm_none_eabi)时,测试覆盖率是可以的。但是当我更新到 GCC 12 时,使用
__gcc_dump() + __gcov_reset()
而不是 __gcov_flush
。我遇到问题:in function
_sub_D_00100_1':...对 __gcov_exit'
的未定义引用。我尝试了很多解决方案,但它没有创建 .gcda 文件。
参考教程:https://gcc.gnu.org/onlinedocs/gcc/Freestand-Environments.html
尝试添加您自己的 __gcov_exit() 实现。您可以在其中使用自己的退出代码,例如使用 __gcov_dump() 转储文件。 请注意,ARM GNU 工具链的最新发行版似乎包含带有空钩子/实现的 gcov 库,因此根本不写入数据文件。我正在使用 XPack arm-none-eabi-gcc-12.2.1-1.2,其中包含完整的 gcov 库。