gcov是一个可用于C/C++的代码覆盖工具,是gcc的内建工具。下面介绍一下如何利用gcov来收集代码覆盖信息。
想要用gcov收集代码覆盖信息,需要在gcc编译代码的时候加上这2个选项 “-fprofile-arcs -ftest-coverage”,把这个简单的程序编译一下
gcc -fprofile-arcs -ftest-coverage hello.c -o hello
编译后会得到一个可执行文件hello和hello.gcno文件,当用gcc编译文件的时候,如果带有“-ftest-coverage”参数,就会生成这个.gcno文件,它包含了程序块和行号等信息
接下来可以运行这个hello的程序
./hello 5
./hello 12
运行结束以后会生成一个hello.gcda文件,如果一个可执行文件带有“-fprofile-arcs”参数编译出来,并且运行过至少一次,就会生成。这个文件包含了程序基本块跳转的信息。接下来可以用gcov生成代码覆盖信息:
gcov hello.c
运行结束以后会生成2个文件hello.c.gcov和myfunc.c.gcov。打开看里面的信息:
-: 0:Source:myfunc.c
-: 0:Graph:hello.gcno
-: 0:Data:hello.gcda
-: 0:Runs:1
-: 0:Programs:1
-: 1:#include
-: 2:
-: 3:void test(int count)
1: 4:{
-: 5: int i;
10: 6: for (i = 1; i < count; i++)
-: 7: {
9: 8: if (i % 3 == 0)
3: 9: printf (“%d is divisible by 3 \n”, i);
9: 10: if (i % 11 == 0)
#####: 11: printf (“%d is divisible by 11 \n”, i);
9: 12: if (i % 13 == 0)
#####: 13: printf (“%d is divisible by 13 \n”, i);
-: 14: }
1: 15:}
被标记为#####的代码行就是没有被执行过的,代码覆盖的信息是正确的,但是让人去读这些文字,实在是一个杯具。不用担心,有另外一个工具叫lcov,可以用程序解析这些晦涩的字符,最终输出成html格式的报告,很好吧!
lcov -d . -t ‘Hello test’ -o ‘hello_test.info’ -b . -c
指定lcov在当前目录“.”去找代码覆盖的信息,输出为’hello_test.info’ ,这个hello_test.info是一个中间结果,需要把它用genhtml来处理一下,genhtml是lcov里面的一个工具。
genhtml -o result hello_test.info
指定输出目录是 result。一个完整的html报告就生成了,做一个连接,把这个目录连到随便一个web server的目录下,就可以看报告了。
测试结果概览
gcov和lcov基本上能满足测试过程中收集代码覆盖率信息的需求,不过有个遗憾就是gcov不能收集.so文件的代码覆盖信息。
相关推荐
本项工程专注于C/C++代码覆盖率分析,设计源码包含2943个文件,涵盖1062个头文件(h)、970个C源文件(c)、244个HTML文件(html)、142个源...项目旨在通过gcov工具深入分析C/C++代码覆盖率,提升代码质量和可维护性。
在Linux平台上,gcov是GCC提供的一个覆盖率测试工具,用于分析C/C++代码的覆盖率,包括语句覆盖、函数覆盖和分支覆盖。gcov通过生成sourcefile.gcov文件,显示源代码中每一行执行的次数,帮助开发者了解代码执行情况...
本篇文章将详细探讨如何在Windows环境下使用各种工具来实现C/C++代码覆盖率检查。 1. **Gcov**: Gcov是GCC编译器套件的一部分,可以提供基本的代码覆盖率信息。在Windows上,你需要安装MinGW或者MingW-w64以获得GCC...
gcov和lcov是两个用于评估C/C++代码覆盖率的工具,它们在开源社区中广泛使用。本文将基于"gcov_lcov 演练工程源码",详细介绍如何使用这两个工具进行代码覆盖率分析。 gcov是GCC编译器套件的一部分,它可以生成关于...
Clang是LLVM项目的一部分,不仅是一个高效的C/C++/Objective-C编译器,还支持许多现代编译器特性,包括代码覆盖率工具。 要启用Clang的代码覆盖率功能,你需要在你的CMakeLists.txt文件中设置相应的编译标志。例如...
lcov是一种广泛使用的工具,主要用于收集和生成C和C++项目的代码覆盖率报告。它与genhtml工具一起工作,提供了一种直观的方式来理解程序中的哪些部分被执行了,以及哪些部分未被执行,这对于软件测试和质量保证至关...
C/C++程序的代码覆盖率统计工具非常少,与JAVA相比开源免费的工具更是寥寥无几,好用又开源的简直是凤毛麟角。左挑右选最后看中了基于GCOV的LCOV作为NGINX测试的覆盖率统计工具。选择LCOV的原因很简单:一是适合GCOV...
使用gcov完成代码覆盖率的测试.Gcov作为gnu/gcc工作组件之一,是一款的免费的代码覆盖率测试工具,而且可以结合lcov生成美观的html的测试报表。本文介绍一些gcov的使用方法,基本原理,一些实际中可能会遇到的问题...
在实际开发中,cppcheck 可以与其它质量保证工具,如单元测试框架(如 CppUnit 或 Google Test)和代码覆盖率工具(如 gcov)结合使用,共同打造高质量的 C/C++ 项目。同时,cppcheck 也可以作为教学工具,帮助初学...
lcov for linux gcovlcov for linux gcovlcov for linux gcovlcov for linux gcovlcov for linux gcovlcov for linux gcov
本篇将详细讲解如何使用`gcc`和`gcov`工具来生成C/C++代码的覆盖率报告。 首先,`gcc`是一个广泛使用的开源编译器,支持C、C++等多种编程语言。在编译时,通过添加特定的标志,`gcc`可以生成包含覆盖率信息的对象...
在C++编程领域,`gcov` 和 `lcov` 是两个非常重要的工具,它们与`Makefile`一起用于实现代码覆盖率测试。`cpp-gcov-lcov-test`是一个项目,它展示了如何在C++项目中集成这些工具,以帮助开发者更好地理解和优化其...
lcov-1.14工具是Linux环境下与gcov一起使用的可视化工具,它主要用于帮助开发者理解和分析代码覆盖率。gcov是GCC编译器套件的一部分,它可以生成代码覆盖率报告,而lcov则提供了更友好的界面和更强大的功能,使得...
lcov 是一个开源工具,主要用于软件测试覆盖率报告的生成,尤其在C++和C语言的单元测试中广泛应用。它的核心功能是将gcov生成的测试覆盖率数据转化为易于阅读的HTML格式,使得开发者能够直观地了解代码被测试的程度...
通过深入研究Linux平台上的代码覆盖率测试,我们不仅了解了GCOV和LCOV这样的关键工具,还掌握了如何使用它们来优化我们的测试策略,提升软件质量。代码覆盖率测试是一项复杂但至关重要的任务,它需要我们不断学习和...
lcov 是一个开源工具,主要用于收集和展示C和C++程序的代码覆盖率信息。它与gcov结合使用,能够帮助开发者了解他们的测试套件在多大程度上覆盖了源代码,从而评估测试的质量和完整性。在软件开发中,代码覆盖率是...
lcov是建立在gcov之上的一个可以生成html代码覆盖率报告的工具,最近公司开始尝试引入代码覆盖来提高产品质量,lcov很好地满足了我们的需求,虽然lcov本身支持生成代码覆盖率的diff报告,但是跟我们的需求不太符合。...
嵌入式 Linux 应用程序调试方法是一份详细的调试指南,涵盖了嵌入式 Linux 的 NFS 开发环境的建立、GDB 调试应用程序、内存工具、C/C++ 代码覆盖、性能 profiling 工具等方面的知识点。下面将对标题、描述、标签和...
在软件开发过程中,代码覆盖率是衡量测试质量的一个...GCOV和Cobertura作为其中的代表,分别在C/C++和Java领域提供了强大的覆盖率分析功能。了解并合理使用这些工具,对于提升软件项目的可靠性和维护性具有重大意义。