gprof是GNU组织下的一个比较有用的性能测试功能:

  主要功能:   找出应用程序中消耗CPU时间最多的函数;

        产生程序运行时的函数调用关系、调用次数

  基本原理:   首先用户要使用gprof工具,必须在GCC编译该文件的选项中添加-pg选项,然后GCC会在用户应用程序的每一个函数中加入一个名为mcount(或者是_mcount、__mcount,这依赖于编译器或操作系统)的函数,即应用程序中每一个函数都要调用mcount函数,而mcount函数使用后会在内存中保存函数调用图,并通过函数调用堆栈的形式查找子函数和父函数的地址,这张调用图也保存了所有与函数调用相关的调用时间、调用次数等信息。当应用程序执行完毕,会在当前目录下产生gmon.out文件,gprof工具正是通过分析gmon.out文件才得出统计资料的。

  使用gprof工具的主要格式:

    gprof  [选项]  用户应用程序  gmon.out

  gprof命令选项:

    -b  不再输出统计表格中的详细信息,仅显示简要信息

    -p  只输出函数的调用图

    -i   输出该统计总结信息

    -T  以传统的BSD格式打印输出信息

    -q  仅输出函数的时间消耗列表

    -w width  设置输出的宽度

    -e Name  不输出函数Name以及其子函数的调用图

    -f Name  输出函数Name及其子函数的调用图

    -z  显示从未使用过的函数信息

    -D  忽略函数中未知的变量

  gprof输出信息列表项解释:

    name  函数名称

    %time  函数使用占全部时间的百分比

    cumulative seconds  函数累计执行的时间

    self seconds  函数本身执行的时间

    calls  函数被调用的次数

    self call  每次调用,花费在函数上的时间

    total call  每一次调用,花费在函数及其子函数的平均时间

  使用gprof的步骤(假设要分析程序为test.c的性能、函数调用情况及函数调用时间):

    (1)#gcc  -pg  -o  test  test.c

    (2)#./test

    (3)#gprof  -b  test  gmon.out

   

程序覆盖测试工具gcov:

  gcov是GNU组织旗下的一个程序覆盖测试工具。

  主要功能:  程序中哪部分代码没有执行?

        哪部分代码执行效率最高?

        哪部分代码占用CPU时间最长?

        哪部分代码消耗时间最短?

  使用建议:  使用gcov进行程序覆盖性测试时,建议用户不要在gcc编译程序的命令中添加对代码的优化。

        同gprof一样,gcov工具只能与GCC协同工作,而不能同其他的软件配套使用

  使用步骤:(1)在GCC编译时必须添加 -fprofile-arcs  -ftest-coverage 选项

       (2)执行编译的可执行文件

       (3)使用gcov命令分析代码运行的效率

  gcov执行 格式:

    gcov  [选项]  用户程序

  gcov命令选项:

    -b  表示显示对分支的测试信息

    -h  显示gcov的帮助信息

    -v  显示gcov的版本信息

    -n  不创建gcov的输出信息

    -f  输出每个函数的使用信息

    

  

GCC高级测试功能扩展——程序性能测试工具gprof、程序覆盖测试工具gcov的更多相关文章

  1. Go测试,功能测试,性能测试,测试辅助,go test 工具,高级测试,IO相关测试,黑盒测试,HTTP测试,进程测试

    go命令教程: http://wiki.jikexueyuan.com/project/go-command-tutorial/0.5.html Go测试 第一个测试 “Hello Test!” 首先 ...

  2. [原创] 上海招聘高级测试工程师(性能测试/自动化测试/App测试),长期有效

    [原创] 上海招聘高级测试工程师(性能测试/自动化测试/App测试方向),长期有效 高级测试工程师(性能/自动化方向) 1.负责性能测试计划,性能需求分析,性能测试方案和用例设计,搭建性能测试环境,执 ...

  3. Asp.net mvc 5 CRUD代码自动生成工具- vs.net 2013 Saffolding功能扩展

    Asp.net mvc 5 CRUD代码自动生成工具 -Visual Studio.net2013 Saffolding功能扩展 上次做过一个<Asp.net webform scaffoldi ...

  4. [推荐] kylinPET是一款功能强大的性能测试工具

    [推荐] kylinPET是一款功能强大的性能测试工具 官方网站: http://www.kylinpet.com/

  5. 【转】测试开发工程师必备软硬能力&高级测试开发工程师需要具备什么能力?

    对于测试的基本知识,可以查看软件测试相关书籍 对于在公司成为一位优秀的测试开发工程师,我觉得下面这篇文章涉及到的是我们需要的,稍微进行改动https://blog.csdn.net/sinat_210 ...

  6. 上海洋码头(www.ymatou.com)急招技术人才(职位:互联网软件开发工程师,.NET网站架构师,Web前端开发工程师,高级测试工程师,产品经理)

    对公司招聘职位有兴趣的童鞋可以把简历发送到zhangzhiqiang@ymatou.com,我们HR会快速给你答复. 互联网软件开发工程师 岗位职责: 1.参与洋码头各个平台(www.ymatou.c ...

  7. LoadRunner调用Java程序—性能测试-转载

    LoadRunner调用Java程序—性能测试   为了充分利用LoadRunner的场景控制和分析器,帮助我们更好地控制脚本加载过程,从而展现更直观有效的场景分析图表.本次将重点讨论LoadRunn ...

  8. vs.net 2013 Saffolding功能扩展

    vs.net 2013 Saffolding功能扩展 Asp.net mvc 5 CRUD代码自动生成工具 -Visual Studio.net2013 Saffolding功能扩展 上次做过一个&l ...

  9. 功能测试很low?不能升级到高级测试工程师?

    功能测试很low?不能升级到高级测试工程师? 功能测试很low?功能测试很简单?功能测试就是黑盒测试?功能测试没有技术含量?功能测试工资低?只会功能测试没有竞争力?功能测试这活初中生都可以干?功能测试 ...

随机推荐

  1. 【BZOJ 3106】 3106: [cqoi2013]棋盘游戏 (对抗搜索)

    3106: [cqoi2013]棋盘游戏 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 544  Solved: 233 Description 一个 ...

  2. Eigen学习笔记1:在VS2015下Eigen(矩阵变换)的配置

    一.Eigen简介 Eigen是一个高层次的C ++库,有效支持线性代数,矩阵和矢量运算,数值分析及其相关的算法. Eigen适用范围广,支持包括固定大小.任意大小的所有矩阵操作,甚至是稀疏矩阵:支持 ...

  3. hihocoder #1076 与链 dp

    直接背包不可做 我们只需要知道每个数位上有多少个$1$,那么我们就能构造出解 因此,我们对每一位讨论, 可以拆出$n + \frac{n}{2} + \frac{n}{4} + ... = 2n$个物 ...

  4. python爬虫我是斗图之王

    python爬虫我是斗图之王 本文会以斗图啦网站为例,爬取所有表情包. 阅读之前需要对线程池.连接池.正则表达式稍作了解. 分析网站 页面url分析 打开斗图啦网站,简单翻阅之后发现最新表情每页包含的 ...

  5. php操作redis出现不报错就退出

    金乐园项目 php操作redis出现不报错就退出  死活找不出原因是因为下面这句话导致:     原因igbinary扩展没有装上 $options[\Redis::OPT_SERIALIZER] = ...

  6. Educational Codeforces Round 11 C. Hard Process 二分

    C. Hard Process 题目连接: http://www.codeforces.com/contest/660/problem/C Description You are given an a ...

  7. Codeforces Round #303 (Div. 2) D. Queue 傻逼题

    C. Woodcutters Time Limit: 20 Sec  Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/545/probl ...

  8. 桥接模式:探索JDBC的接口

    目录概要 场景问题 假设要设计一个电脑商场管理系统的某个模块设计,电脑分为品牌和类型两个纬度,我们应该怎么解决?我们初学者最容易想到的办法就是利用继承的方式,那利用继承实现的类图又是什么样子呢?我们看 ...

  9. Jenkins使用jenkins-cli.jar进行远程调用时出现“ERROR: No such job 'test'”或者权限不够等问题解决(Windows)

    网上最提倡的解决办法是用SSH的key进行登录,但是我发觉Linux上非常容易实现,但是Windows压根不知道在哪里设置. 原文:https://issues.jenkins-ci.org/brow ...

  10. <摘录>CentOS怎么查看某个命令的源代码

    安装yumdownloader工具: # yum install yum-utils 设置源: [base-src] name=CentOS-5.4 - Base src - baseurl=http ...