Gcc 如何使用STM发现板上的Nuttx操作系统在测试应用程序上运行gcov?

Gcc 如何使用STM发现板上的Nuttx操作系统在测试应用程序上运行gcov?,gcc,arm,gcov,eabi,Gcc,Arm,Gcov,Eabi,设置: 工具链:gcc-arm-none-eabi-5_2-2015q4-20151219 目标:STM429i迪斯科舞厅 我想运行gcov,并根据以下链接在目标中生成实时报告: 首先,成功地使用-fprofile arcs和-ftest覆盖标志编译了我的代码(兼容POSIX的NUTTX OS),并为我的src文件生成了.gcno文件 其次,成功地启用了-fprofile arcs标志,并使用libgcov.a文件(工具链的一部分)生成了最终的二进制文件 现在,我不知道在我的测试应用程序中需要

设置: 工具链:gcc-arm-none-eabi-5_2-2015q4-20151219 目标:STM429i迪斯科舞厅

我想运行gcov,并根据以下链接在目标中生成实时报告:

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

其次,成功地启用了-fprofile arcs标志,并使用libgcov.a文件(工具链的一部分)生成了最终的二进制文件

现在,我不知道在我的测试应用程序中需要做什么更改来调用gcov、生成报告和转储报告

另一个问题是,gcov函数在libgcov.a中具有隐藏属性,如下所示。
9:00000000 4 FUNC全局隐藏1\uuuu gcov\u刷新
9:00000000 4函数全局隐藏1\uuuu gcov\u init

因此,我无法根据需要调用


生成.gcda文件时的任何输入都将非常有用

你能换成
gcov\u exit
吗?它类似于
\uu gcov\u flush
。通常,它是
gcov\u exit
gcov\u flush
中的一个,您可以使用任何一个

如果这不存在或也隐藏了,您可以使用我在我的一个项目中尝试过的这种方法。我从gcc源代码(与我的工具链相匹配的版本)中选择(并出于各种原因修改了)
gcov_exit
,并将其插入到我的项目中。在其他一切保持不变(编译器标志等)的情况下,我能够进入
gcov_exit
,并遵循您提到的博客链接中的其他方法