我试图用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时,它会抛出一个错误 - 程序太大而无法适应内存。 我该如何解决这个问题? 我错了吗?
谢谢, 甲-J
答案 0 :(得分:0)
显然,您必须在目标设备上运行可执行文件。目标设备必须具有文件系统。退出时,可执行文件使用普通的POSIX函数写入覆盖信息 - open
,fcntl
,write
,close
等。查看GCC源中的gcov-io.c
。确保您可以成功将libgcov.a
链接到您的可执行文件,您对目标设备具有写入权限等。