arm elf gcc。没有。gcda文件已创建,程序太大,无法放入内存? 我试图在C++中的一个简单的Hello World程序上进行代码覆盖。 目标设备是arm处理器,因此我使用GNU arm工具链

arm elf gcc。没有。gcda文件已创建,程序太大,无法放入内存? 我试图在C++中的一个简单的Hello World程序上进行代码覆盖。 目标设备是arm处理器,因此我使用GNU arm工具链,gcc,arm,code-coverage,gnu,elf,Gcc,Arm,Code Coverage,Gnu,Elf,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时,它抛出一个错误-程序太大,无法放入内存。 我如何解决这个问题? 我是不是出了什么问题

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时,它抛出一个错误-程序太大,无法放入内存。 我如何解决这个问题? 我是不是出了什么问题

谢谢,
A-J

显然,您必须在目标设备上运行可执行文件。目标设备必须有一个文件系统。退出时,可执行文件使用普通POSIX函数写入覆盖率信息—
open
fcntl
write
close
,等等。查看GCC源代码中的
gcov io.c
。确保您可以成功地将
libgcov.a
链接到您的可执行文件中,并且您在目标设备上具有写入权限,等等。

我想我已经找到了原因。arm可执行文件不会在x86上运行。但是,如果我不能运行exe,我怎样才能获得代码覆盖率呢?我会试试这个。另外,语法正确吗?我是否必须创建一个-o main.elf文件,然后在目标上运行它?我是新来的。通常他们不会介意文件名是什么。OS加载器将在文件本身内部查找ELF签名和ELF头,如果ELF头中的类型不是ET_EXEC,则拒绝执行它。