qemu 的代码覆盖率

Code coverage with qemu

我最近开始使用 qemu,当您没有 运行 您的固件所需的硬件(目前用于 cortex-m3)时,它是一个很好的工具。

现在我想做的是用它做一些测试覆盖。我尝试使用 GNUC ARM Eclipse,我已经成功地在 qemu 中编译和执行了代码,但是每当我添加 -fprofile-arcs -ftest-coverage 标志(对于项目然后对于所需的文件 运行 覆盖率)我能够创建 .gcno 文件,这意味着在执行我的代码后它将生成一个 .gcda 文件,然后我应该能够看到覆盖率。

这就是一切出错的地方。我能够生成一个 .gcda 文件,但每当我尝试打开其中任何一个时,eclipse 都会告诉我它无法打开该文件,因为它是空的。我试过在另一台计算机上复制该过程,但我没有成功创建 gcda 文件(可能是不同的二进制文件)。

此时我真的不知道如何进行。我应该放弃 ARM Eclipse 并坚持使用 makefile(是否可以通过这种方式 运行 gcov?)还是我遗漏了一些可以修复的非常小的东西?

PS:我使用 windows 7 64 位,GNU ARM Eclipse 网站上提供的最新版本。我也刚刚想到通过 makefile 来做这件事(这是一个充满压力的一天,真的很晚了)所以我还没有尝试过,我只尝试执行代码,但没有覆盖。

据我所知,qemu 无法生成 DWARF 信息。但是有一个项目建议使用 qemu 进行代码覆盖:Couverture Project