易截截图软件、单文件、免安装、纯绿色、仅160KB

Linux学习 寻找程序热点(一):gprof

gprof介绍
gprof是GNU profiler工具,存在于binutils工具包。可以显示程序运行的“flat profile”,包括每个函数的调用次数,每个函数消耗的处理器时间。也可以显示“调用图”,包括函数的调用关系,每个函数调用花费了多少时间。还可以显示“注释的源代码”,是程序源代码的一个复本,标记有程序中每行代码的执行次数。
gprof 实现原理:
gprof并不神奇,在编译和链接程序的时 候(使用 -pg 编译和链接选项),gcc 在你应用程序的每个函数中都加入了一个名为mcount(or“_mcount”, or“__mcount”)的函数,也就是说-pg编译的应用程序里的每一个函数都会调用mcount, 而mcount会在内存中保存一张函数调用图,并通过函数调用堆栈的形式查找子函数和父函数的地址。这张调用图也保存了所有与函数相关的调用时间,调用次数等等的所有信息。
GPROF的基本使用方法如下:
1.使用GCC加上-pg选项编译程序
2.执行程序,会生成gmon.out
3.使用gprof分析gmon.out文件,得出统计资料
4.GPROF不支持动态链接库和多线程
范例:
#include<stdio.h>
void funca()
{
    int i  = 0;
    int n = 0;
    for(i = 0;i < 10000000;i++)
    {
        n++;
        n--;
    }
}
void funcb()
{
    int i  = 0;
    int n = 0;
    for(i = 0;i < 10000000;i++)
    {
        n++;
        n--;
    }
}
int main(int argc,char *argv[])
{
    int i = 0;
    for(i = 0;i < 10;i++)
    {
        funca();
    }
    funcb();
    return 0;
}
编译:
$ gcc hello.c -pg -o hello
运行:
$ ./hello
生成gmon.out问件
使用gprof进行解析:
$ gprof hello gmon.out -p
Flat profile:
Each sample counts as 0.01 seconds.
  %         


相关文档:

Linux设备模型之input子系统详解

一:前言
最近在研究android的sensor driver,主要是E-compass,其中用到了Linux input子系统.在网上也看了很多这方面的资料,感觉还是这篇分析的比较细致透彻,因此转载一下以便自己学习,同时和大家分享!
(这篇博客主要是以键盘驱动为例的,不过讲解的是Linux Input Subsystem,可以仔细的研究一下!)
键盘驱动将检 ......

Linux 引导过程内幕

引导 Linux® 系统的过程包括很多阶段。不管您是引导一个标准的 x86 桌面系统,还是引导一台嵌入式的
PowerPC® 机器,很多流程都惊人地相似。本文将探索 Linux
的引导过程,从最初的引导到启动第一个用户空间应用程序。在本文介绍的过程中,您将学习到各种与引导有关的主题,例如引导加载程序、内核解压、初始
RA ......

LINUX期末复习 SHELL编程

一、SHELL简介 ①什么是SHELL 答:一个作为用户与LINUX系统之间的操作接口程序,允许用户向操作系统输入需要执行的命令。
      一种高级、解释性的程序语言。     ②SHELL的种类 ③SHELL的执行
         .  ......

Linux(Ubuntu) 中的乱码解决大全(待续)

   由于Linux不是中国人开发的,开发过程中也不是以中文为母语,虽有中文语言包,在软件兼容性上出现中文乱码也在所难免。我抽取网络上前人的经验,结合自己的理解,将他们加以总结,希望对后来者有所帮助。
     1、html文件乱码;
        &nbs ......

QT4.6+QT Creator1.3安装(Linux)

1、首先从http://qt.nokia.com/downloads 下载“Qt SDK for Linux”,包括了QT4.6和QT Creator1.3。 Download Qt SDK for Linux/X11 32-bit** (353 MB)

2、修改文件qt-sdk-linux-x86-opensource-2009.05.bin的属性,让其可执行:
chmod u+x qt-sdk-linux-x86-opensource-2009.05.bin
3、双击qt-sdk-linux- ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号