GUN gcc gcov不好使

本文介绍了如何在Linux中使用gcc和gcov进行C程序的测试覆盖率分析,遇到‘无法打开notes文件’和‘datafile’问题后,提供了解决方案,即添加选项-coverage并生成cov.c.gcov文件以显示85.71%的执行覆盖率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题背景介绍:

在Linux系统中,利用文本编辑器创立一个文件cov.c,文件内容如下:

#include<stdio.h>

int main (void)
{
   int i;
   
   for( i=1;i<10;i++)
      {
         if(i%3==0)
            printf("%d is divisible by 3\n",i);
         if(i%11==0)
            printf("%d is divisible by 11\n",i);
       }
       
    return 0;
    
 }

在该文件所处目录中使用“在终端打开”;

在命令行输入:gcc -Wall -fprofile-arcs -ftest-coverage cov.c

在命令行输入:./a.out ;

在命令行输入:gcov cov.c

得到:

cov.gcno:cannot open notes file
cov.gcda:cannot open data file, assuming not executed
No executable lines

解决方法:

(可以先将之前目录中除cov.c以外其它文件都删除)

在命令行输入:gcc -Wall -fprofile-arcs -ftest-coverage cov.c -o cov;

在命令行输入:./cov;

在命令行输入:gcov cov.c

得到:

File 'cov.c'
Lines executed:85.71% of 7
Creating 'cov.c.gcov'

Lines executed:85.71% of 7
 

原目录中多出一文件——cov.c.gcov,内容为:

        -:    0:Source:cov.c
        -:    0:Graph:cov.gcno
        -:    0:Data:cov.gcda
        -:    0:Runs:1
        -:    1:#include<stdio.h>
        -:    2:
        1:    3:int main (void)
        -:    4:{
        -:    5:   int i;
        -:    6:   
       10:    7:   for( i=1;i<10;i++)
        -:    8:      {
        9:    9:         if(i%3==0)
        3:   10:            printf("%d is divisible by 3\n",i);
        9:   11:         if(i%11==0)
    #####:   12:            printf("%d is divisible by 11\n",i);
        -:   13:       }
        -:   14:       
        1:   15:    return 0;
        -:   16:    
        -:   17: }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值