1

我试图在 C++ 中对一个简单的 hello world 程序进行代码覆盖。目标设备是一个 arm 处理器,因此我使用的是 GNU ARM 工具链。

arm-elf-gcc -mcpu=arm7tdmi -O2 -g -c main.c -o main.exe 创建一个 .gcno 文件,但未能创建 gcov 查找代码覆盖率所需的 .gcda 文件。

通常,当我运行 g++/gcc -fprofile-arcs -ftest-coverage .cpp 时,它首先会创建一个 .gcno 文件和一个 .exe。运行 a.exe 后,它会生成 .gcda 文件。

在这里,当我尝试运行 main.exe 以生成 .gcda 时,它会引发错误 - 程序太大而无法放入内存。我该如何解决这个问题?我在哪里出错了吗?

谢谢, AJ

4

1 回答 1

0

显然,您必须在目标设备上运行您的可执行文件。目标设备必须有一个文件系统。退出时,可执行文件使用普通 POSIX 函数 - openfcntlwriteclose等写入覆盖信息。查看gcov-io.cGCC 源代码。确保您可以成功链接libgcov.a到您的可执行文件,您在目标设备上具有写入权限等。

于 2012-11-16T20:20:14.697 回答