gcov是和gcc结合使用的测试代码覆盖率的一个工具(profiler),可用于发现代码的瓶颈。可以
做到(使用gcov最好不要优化编译):
1.每一行代码运行的次数
2.那些代码执行了
3.没一节代码所用的时间
gcov会创建一个名为‘sourcefile.gcov’的日志文件,他指示了代码运行的时间。此文件可被
gprof使用,gprof可从中给出时间信息。
gcov只支持gcc编译的代码,并且编译时必须有‘-fprofile-arcs -ftest-coverage’参数,它
高速编译器添加额外的对gcov有用信息以及在目标文件中加入产生profiling信息的代码。当运行这样
编译的程序时,每个以‘-fprofile-arcs’编译的目标文件所在的目录会生成一个相应的".gcda"文件。
每个以‘-ftest-coverage’参数编译时会生成".gcno"文件,它包含了重建基本块图表和指派行号的信
息。然后,以源文件名为参数运行gcov,gcov就可从".gcda"文件中获得每一行代码运行的频率。比如:
$ gcc -fprofile-arcs -ftest-coverage tmp.c
$ a.out
$ gcov tmp.c
注意,gcov必须在编译代码时所在的目录中运行,否则无法定位文件。另外,运行计数是累及的,若
运行gcov时没删除上次输出的文件,本次测试计数会累加到上次计数上,而不是覆盖。
gcov常用参数:
-a:输出每个基本块的运行计数,此选项可用于统计在同一行中的若干语句的各自运行次数
-b:输出分支语句频率信息到输出文件,以及概要信息到标准输出,但不显示无条件分支
-c:以数字而不是百分比显示分支频率
-n:不创建输出文件
-l:创建的输出文件名中包含头文件名,这对于头文件中包含代码并被多个源文件使用时有用
-p:在.gocv文件名中加入完整的路径信息,此时路径中的'/'用'#'表示,'..'用'^'表示
-f:输出每个函数的概要信息
.gcov文件的基本格式是:
执行次数(-表示改行没代码,#####表示改行从未执行过):行号:该行代码
交叉profiling:
gcov要求运行时在目标系统中有相同的编译时的绝对目录路径,为了支持交叉编译,可使用下面两个
环境变量重定位数据文件:
GCOV PREFIX - 指定加入到目标文件中的绝对路径前缀,默认没有前缀
GCOV PREFIX STRIP - 指示要跳过的目录层次
比如编译后目标文件在‘/user/build/foo.o’,编译后的程序执行时会创建‘/user/build/foo.gcda’
文件。但若把程序拷
- 浏览: 769199 次
- 性别:
- 来自: 大连
最新评论
-
dashengkeji:
1a64f39292ebf4b4bed41d9d6b21ee7 ...
使用POI生成Excel文件,可以自动调整excel列宽等(转) -
zi_wu_xian:
PageOffice操作excel也可以设置表格的行高列宽,并 ...
使用POI生成Excel文件,可以自动调整excel列宽等(转) -
wanggang0321:
亲,我在pptx(office2007以上版本)转pdf的时候 ...
JODConverter]word转pdf心得分享(转) -
xiejanee:
楼主:你好!我想请问下 你在代码中用DOMDocument* ...
Xerces-C++学习之——查询修改XML文档 (转)
相关推荐
该程序是从gcc-4.1.2源代码中抽取出来的与gcov和gcov-dump相关的文件组成的小项目,包含两个工具gcov和gcov-dump。希望能对通过gcc覆盖率测试工具GCOV进行覆盖率测试相关工作的同行有些许的帮助。 其中,gcov的输入...
该程序是从gcc-4.1.2源代码中抽取出来的与gcov相关的文件组成的小项目。希望能对通过gcc覆盖率测试工具GCOV进行覆盖率测试相关工作的同行有些许的帮助。 gcov的输入是一个.c文件,前提是已经编译生成了.gcno文件并...
使用gcov获取程序执行路径时,有些程序因异常等错误而结束,常规的gcov获取不到程序的执行路径。使用我们这个插件就可以获取。
该程序是从gcc-4.1.2源代码中抽取出来的与gcov-dump相关的文件组成的小项目。希望能对通过gcc覆盖率测试工具GCOV进行覆盖率测试相关工作的同行有些许的帮助。 gcov-dump是一个dump程序,输入是一个gcov的文件,或者....
本文介绍一些gcov的使用方法,基本原理,一些实际中可能会遇到的问题以及解决思路。 Gcov作为gnu/gcc工作组件之一,是一款的免费的代码覆盖率测试工具,而且可以结合lcov生成美观的html的测试报表。本文介绍一些...
详细描述如何使用gcov工具来进行内核的代码覆盖率测试。包括linux-2.4内核和linux-2.6内核。极度推荐!
lcov for linux gcovlcov for linux gcovlcov for linux gcovlcov for linux gcovlcov for linux gcovlcov for linux gcov
gcov theory, usage, realization process
采用覆盖率驱动的验证方式可以量化验证进度,保证验证的完备性。本文主要介绍了openharmony代码和分支覆盖率测试中所使用的工具(即gcov及lcov)的简介、工作原理及使用方法。
语法格式:gcov [参数] [文件] 常用参数: -a 显示每个基本的信息 -b 输出包含分支概率 -c 给出跳转的分支数,而不是百分比 -n 不创建输出文件 -l 为包含进来的源文件使用长输出文件名 -
gcov_gprof.zip
afl-cov, 使用afl模糊测试案例生成gcov的代码覆盖率结果 AFL Fuzzing Fuzzing Fuzzing Fuzzing简介afl-cov 使用 AFL fuzzer afl-fuzz 生成的测试用例文件为目标二进制文件生成gcov代码覆盖率结果。 为了确定AFL的新...
gcov-fortran 一个最小的例子,如何使用gcov 要求 ... gcov已与gfortran / gcc一起安装 用法 编译程序 make 执行程序 ./test 生成覆盖率信息 ...您必须确保使用编译代码的gcov版本。... 并在makefile中添加该路径
您应该最终得到一个或多个.gcov文件。 接下来,安装 gem: gem install gcovtools 这应该会在您的路径中为您提供一个gcovtools可执行文件。 最后,以多种可能的方式之一执行gcovtools 。 例如,生成一个 HTML 覆盖...
一个gcov和lcov使用和练习的源码,仅用来记录自我学习和使用gcov的过程和经验,以便后续开发中可以借鉴。
• 伴随GCC发布,配合GCC共同实现对C/C++文件的语句覆盖和分支覆盖测试; • 与程序概要分析工具(profiling tool,例如gprof)一起工作,可以估计程序中哪一段代码最耗时; 注:程序概要分析工具是分析代码性能的工具
此文件中的代码仅了解gcc-11 gcov文件格式。 进步 生成.info文件 目前正在进行html摘要生成 GCC选项 下文所述的GCC命令行选项用于检测代码,以进行代码覆盖率分析。 这些描述直接来自gcc命令行选项文档。 -...
lcov,可以将gcov生成的测试结果转换为html
使用gcc/gcov生成代码覆盖率报告-源码
GNU Gcov性能分析工具的一个前端分析工具,可以用于分析Gcov后端的性能结果。