Unit testing 如何在交叉编译器中使用gcov?

Unit testing 如何在交叉编译器中使用gcov?,unit-testing,testing,embedded,arm,gcov,Unit Testing,Testing,Embedded,Arm,Gcov,我需要借助gcov工具对基于arm的板中的驱动程序进行单元测试。当gcov用于x86体系结构时,它将在执行程序后创建.gcda文件。但对于基于arm的板,.gcda文件不会被创建。因此,没有这些,我就不能使用gcov工具。我的问题是如何在交叉编译中使用gcov工具。?。提前谢谢 gcov代码/数据结构绑定到主机文件系统,交叉编译器工具链没有任何端口或配置来更改此行为。如果您的目标文件是~/myproject/abc.o,那么由插入指令的代码创建/更新的gcov内存中数据结构将指向~/myproj

我需要借助gcov工具对基于arm的板中的驱动程序进行单元测试。当gcov用于x86体系结构时,它将在执行程序后创建.gcda文件。但对于基于arm的板,.gcda文件不会被创建。因此,没有这些,我就不能使用gcov工具。我的问题是如何在交叉编译中使用gcov工具。?。提前谢谢

gcov代码/数据结构绑定到主机文件系统,交叉编译器工具链没有任何端口或配置来更改此行为。如果您的目标文件是~/myproject/abc.o,那么由插入指令的代码创建/更新的gcov内存中数据结构将指向~/myproject/abc.gcda,并且所有这些路径都在主机上。如您所见,在远程系统上运行的插入指令的代码ARM板无法访问这些路径,这是您在ARM板上看不到.gcda文件的主要原因

有关获取.gcda文件以解决上述问题的一般方法,请参阅。本文介绍了一种破解gcov函数并手动将gcov数据结构转储到主机上的.gcda文件中的黑客方法


我使用上面提到的博客为我的ARM项目做代码覆盖。然而在我的工具链版本(2016年10月/11月提供的GNU arm工具链版本)中,我面临另一个gcc错误问题,您将无法进入gcov函数并完成上述博客中提到的过程,因为相关gcov函数挂起一个无限循环。你可能会也可能不会面对这个问题,因为我不确定这个bug是否已经修复。如果您遇到此问题,我的博客中提供了解决方案。

如果您还有问题,请回来。您可能希望指定版本。您的问题已经在这一旧讨论中得到了回答:[如何在嵌入式系统上进行代码覆盖][1][1]:始终欢迎指向潜在解决方案的链接,但请在链接周围添加上下文,以便您的其他用户了解它是什么以及为什么存在。始终引用重要链接中最相关的部分,以防无法访问目标站点或永久脱机。