wood2882 2025-05-23 23:10 采纳率: 11.1%
浏览 23
已结题

在arm上运行不产生.gcda

#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;
}

  • 写回答

5条回答 默认 最新

  • wood2882 2025-05-24 23:31
    关注

    main.gcda已经生成了,但不是在target机器的当前目录; main.gcda所在路径和“编译机的代码目录”相同,原来是没找到

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 6月1日
  • 已采纳回答 5月24日
  • 创建了问题 5月23日