如何在STM发现板上使用Nuttx OS在测试应用程序上运行gcov?

时间:2016-06-17 07:51:30

标签: gcc arm gcov eabi

设定: 工具链:gcc-arm-none-eabi-5_2-2015q4-20151219 目标:STM429i-disco board

我想运行gcov并根据以下链接获取目标中生成的实时报告: https://mcuoneclipse.com/2014/12/26/code-coverage-for-embedded-target-with-eclipse-gcc-and-gcov/

首先,成功地使用-fprofile-arcs&编译了我的代码(POSIX兼容的NUTTX OS)。 -ftest-coverage标志&为我的src文件生成了.gcno文件。

第二,sucesfully与启用-fprofile-arcs标志链接并使用libgcov.a文件(工具链的一部分)并生成最终二进制文件。

现在,我不知道我的测试应用程序需要哪些更改来调用gcov,生成报告和放大器。转储报告。

另一个问题是,gcov函数在libgcov.a中具有HIDDEN属性,如下所示 9:00000000 4 FUNC GLOBAL HIDDEN 1 __gcov_flush
9:00000000 4 FUNC GLOBAL HIDDEN 1 __gcov_init

所以,我无法根据需要调用。

获取.gcda文件的任何输入都会有很大帮助。

1 个答案:

答案 0 :(得分:0)

你能找到gcov_exit吗?它类似于__gcov_flush。通常,它是gcov_exit__gcov_flush中的一个,你可以使用任何一个。

如果不存在或者也隐藏,您可以使用我为我的一个项目尝试过的方法。我从gcc源代码(与我的工具链匹配的版本)(可在https://github.com/reeteshranjan/libgcov-embedded获得)中选择(并因各种原因修改)gcov_exit的实现,并将其插入我的项目中。在其他所有内容保持不变的情况下(编译器标记等),我可以进入gcov_exit并按照您提到的博客链接中的其余方法进行操作。