#1. 问题:交叉编译后,想在ARM上运行代码,查看覆盖率。应该如何操作。
我按如下操作不产生.gcda文件,还有报错
#2. 在服务器上交叉编译
/sdk/bin/aarch64-linux-gnu-gcc -O0 -g -fprofile-arcs -ftest-coverage -L/sdk/usr/lib/gcc/aarch64-linux-gnu/10.1.0/ -lgcov main.c -o main
#3. 在ARM上运行
testarm# ./main 100
- = 10000
libgcov profiling error: /testarm/main.gcda:overwriting an existing profile data with a different timestamp
#4. 代码
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int gcov_test(int argc, char *argv[])
{
int a = 10;
if (argc>1){
a = atoi(argv[1]);
}
if (a>0){
a = a*a;
printf("+ = %d\n", a);
}else if (a<0){
a = -a*a;
printf("- %d\n", a);
}else{
printf("a = %d\n", a);
}
exit(0);
}
int main(int argc, char *argv[])
{
gcov_test(argc,argv);
return 0;
}