`
fanrey
  • 浏览: 256516 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

gprof(转载)

 
阅读更多
CPU profiling tool: O'profile, kernel shark, trace-cmd, gprof, perf.
Memory tool: mpatrol: mem leak detection
             glibc-util:
gprof

1.1      简介

gprof实际上只是一个用于读取profile结果文件的工具。gprof采用混合方法来收集程序的统计信息,他使用检测方法,在编译过程中在函数入口处插入计数器用于收集每个函数的被调用情况和被调用次数;也使用采样方法,在运行时按一定间隔去检查程序计数器并在分析时找出程序计数器对应的函数来统计函数占用的时间。



Gprof具有以下优缺点:



1)  优点:

a)         GNU工具,人手一个;

b)        混合方法采集信息。



2)  缺点:

a)         需要编译选项支持:

             i.              使用gcc/cc编译和链接时需要加入-pg选项

             ii.              使用ld链接时需要用/lib/gcrt0.o代替crt0.o作为第一个input文件

             iii.              如果要调试libc库需要使用-lc_p代替-lc参数

b)        调试多线程程序只能统计主线程的信息(所以不能用于kingbase)。



1.2      使用方法

1.2.1        编译程序

使用gcc/cc编译和链接时需要加入-pg选项

使用ld链接时需要用/lib/gcrt0.o代替crt0.o作为第一个input文件

如果要调试libc库需要使用-lc_p代替-lc参数



1.2.2        运行程序生成统计信息

正常运行编译好的程序,程序正常结束后会在当前目录生成统计信息文件gmon.out。

程序必须正常退出(调用exit或从main中返回)才能生成统计信息。

当前目录下如果有另外叫gmon.out的文件,内容将被本次运行生成的统计信息覆盖,多次运行统一程序请将前一次的gmon.out改名。



1.2.3        使用gprof查看统计结果

命令格式:

gprof options [executable-file [profile-data-files...]] [> outfile]

常用参数介绍:

symspec表示需要加入或排除的函数名,和gdb指定断点时的格式相同。



1)  输出相关:

a)         -A[symspec]或--annotated-source[=symspec]:进行源码关联,只关联symspec指定的函数,不指定为全部关联。

b)        -I dirs或--directory-path=dirs:添加搜索源码的文件夹,修改环境变量GPROF_PATH也可以。

c)         -p[symspec]或--flat-profile[=symspec]:默认选项,输出统计信息,只统计symspec指定的函数,不指定为全部统计。

d)        -P[symspec]或--no-flat-profile[=symspec]:排除统计symspec指定的函数

e)         -q[symspec]或--graph[=symspec]:默认选项,输出函数调用信息,只统计symspec指定的函数,不指定为全部统计。

f)         -Q[symspec]或--no-graph[=symspec]:排除统计symspec指定的函数

g)        -b或--brief:不输出对各个参数含义的解释;



2)  分析相关:

a)         -a或--no-static:定义为static的函数将不显示,函数的被调用次数将被计算在调用它的不是static的函数中;

b)        -m num或--min-count=num:不显示被调用次数小于num的函数;

c)         -z或--display-unused-functions:显示没有被调用的函数;



1.3      一个例子

编译测试文件:

gcc –g –o test test.c –pg

执行程序:

./test

查看统计信息:

gprof -b -A -p -q test gmon.out > pg



1.4      gprof产生的信息解析

%                        the percentage of the total running time of the
time                     program used by this function.
                           函数使用时间占所有时间的百分比。
cumulative          a running sum of the number of seconds accounted
seconds             for by this function and those listed above it.
                           函数和上列函数累计执行的时间。
self                    the number of seconds accounted for by this
seconds             function alone.  This is the major sort for this
                          listing.
                          函数本身所执行的时间。
calls                   the number of times this function was invoked, if
                          this function is profiled, else blank.
                          函数被调用的次数
self                   the average number of milliseconds spent in this
ms/call               function per call, if this function is profiled,
                         else blank.
                          每一次调用花费在函数的时间microseconds。
total                  the average number of milliseconds spent in this
ms/call               function and its descendents per call, if this
                          function is profiled, else blank.
                          每一次调用,花费在函数及其衍生函数的平均时间microseconds。
name                 the name of the function.  This is the minor sort
                          for this listing. The index shows the location of
                          the function in the gprof listing. If the index is
                          in parenthesis it shows where it would appear in
                          the gprof listing if it were to be printed.
                          函数名





1.4      结论



我们可以使用程序概要分析快速的找到一个程序里面值得优化的地方。
分享到:
评论

相关推荐

    性能分析工具gprof应用详细介绍

    性能分析工具gprof应用详细介绍,性能分析工具gprof应用详细介绍,性能分析工具gprof应用详细介绍。

    gprof 说明文档(英文)

    gprof是一款广泛用于性能分析的工具,主要用于C、C++以及FORTRAN程序。通过对程序进行编译时加入特定的编译选项(如在GCC编译器中使用-g选项),可生成程序调用关系的图表和CPU时间的详细分析,方便开发者在开发过程...

    gprof2dot.tar.gz

    《gprof2dot:将gprof性能分析数据转化为可视化图》 在软件开发过程中,性能优化是一项至关重要的任务。为了更好地理解和改进程序的性能,开发者通常会借助各种工具,其中gprof和gprof2dot是两个非常实用的工具。...

    性能分析工具gprof应用详细介绍.pdf

    《gprof性能分析工具详解》 gprof是GNU项目中的一款强大的性能分析工具,它能够帮助开发者对C、C++、Pascal、Fortran等语言编写的程序进行性能分析,以识别程序中的性能瓶颈。在Linux、AIX、Sun等操作系统上,gprof...

    oprofile gprof

    **Oprofile 和 Gprof:两种性能分析工具** 在软件开发和优化过程中,性能分析是至关重要的环节,它能帮助我们定位程序的瓶颈,提高代码效率。`oprofile` 和 `gprof` 是 Linux 系统中常用的两种性能分析工具,它们...

    Python-gprof2dot将分析输出为dot图谱文件

    Python中的gprof2dot是一个非常实用的工具,它允许开发者将程序性能分析的数据转换成图形化表示,便于理解和解析复杂的性能瓶颈。这个工具基于Python语言,主要与gprof(一个C/C++的性能分析器)配合使用,可以将...

    gprof.tar For linux

    gprof.tar 需找程序热点,优化程序

    gprof工具诊断代码转化成图形化脚本gprof2dot.py

    该脚本可以通过dot工具将gprof工具生成的诊断代码图形化。

    使用GProf来优化你的C或C++程序.pdf

    使用 GProf 来优化你的 C 或 C++ 程序.pdf 这篇文章主要介绍了使用 GProf 工具来优化 C 或 C++ 程序的方法。GProf 是一个功能强大且易于使用的性能分析工具,可以帮助开发者快速识别出程序中的性能瓶颈,并对其进行...

    gprof2dot.py

    gprof2dot linux环境下 C++性能测试工具 ,有助于查看程序的调用流程和次数.

    gprof2dot, 将分析输出转换为点图形.zip

    gprof2dot, 将分析输出转换为点图形 关于 gprof2dot这是一个将多个分析器的输出转换为一个点图( )的python 脚本。它可以:从以下位置读取输出:Linux性能测试valgrind工具的 callgrindsysprofVTune放大器 XE

    gprof性能分析工具

    《gprof性能分析工具深度解析》 在C++编程领域,优化代码性能是提升软件效率的关键环节。为了更好地理解和改善程序的运行效率,开发者需要掌握各种性能分析工具。其中,`gprof`是一款广泛使用的命令行工具,它能...

    gcov_gprof.zip

    在IT行业中,`gcov` 和 `gprof` 是两种非常重要的工具,它们主要用于C和C++程序的性能分析和代码覆盖率测试。`gcov_gprof.zip` 文件可能包含了一系列的教程、示例代码和使用指南,帮助用户理解和掌握这两个工具的...

    gprof性能分析使用工具

    "gprof"是一款经典的性能分析工具,专用于C和C++程序,它能够帮助开发者识别程序运行时的热点,从而定位到可能存在的性能瓶颈。本篇文章将深入探讨gprof的使用方法及其在性能可视化分析中的作用。 gprof的工作原理...

    C 代码 使用 gprof() 分析工具.rar

    本资源"**C代码 使用gprof()分析工具.rar**"提供了一个示例,教你如何结合C语言和gprof来分析程序性能。 `gprof`是GNU Profiling Tool的简称,它是GNU调试器GDB的一部分,用于静态分析程序的执行情况。以下将详细...

    Linux性能评测工具之gprof1

    Linux性能评测工具中的gprof是一个强大的分析工具,它可以帮助开发者识别程序中的性能瓶颈。gprof是GNU编译器工具包的一部分,通常在Linux系统中已经预装。它的主要功能是收集和分析程序运行时的统计信息,以便于...

Global site tag (gtag.js) - Google Analytics