GNU profiler(gprof)使用介绍及遇到的问题总结

本文介绍了GNU gprof的使用步骤,包括在CentOS系统上如何编译链接程序,运行生成gmon.out文件,以及利用gprof生成测试报告。此外,文章讨论了gprof的工作原理、优缺点,并提供了生成图形化报告的方法。同时,针对遇到的问题,如gprof与CMakeList.txt结合使用,以及glog初始化影响gprof工作的情况,提出了解决方案。
摘要由CSDN通过智能技术生成
最近实习,导师让做一个服务器的优化工作。由于自己没有做过相关工作,就在网上看能不能找一些工具,帮我先找出服务器性能瓶颈卡在什么地方。
当看到gprof之后,发现这就是我想要找。下面会给出Gprof的介绍及使用方式,然后给出我在使用gprof的过程中遇到的困难以及是如何解决的。

使用平台:CentOS 64 (ps: gprof也支持Windows,但我没在Windows上试过。)

1、gprof简单介绍:

 如果没有测试工具可以使用,改进应用程序的性能是非常难做的,因为究竟程序中是哪些函数消耗掉了大部分执行时间、又有哪些函数的调用次数最多
 (ps:调用次数最多不一定就最耗时)通常很难给出结论。
 GNU 编译器工具包所提供了一种剖析工具 GNU profiler(gprof)。gprof 可以为Linux平台上的程序精确分析性能瓶颈。 可以显示程序运行
 的“flat profile”,包括每个函数的调用次数,每个函数消耗的处理器时间。也可以显示“call graph”(调用图),
 包括函数的调用关系,每个函数调用花费了多少时间。还可以显示“注释的源代码”,是程序源代码的一个复本,标记有程序中每行代码的执行次数。

2、使用步骤:

  • 使用-pg选项编译链接程序,生成可执行程序; 
  • 运行可执行程序,程序正常退出,生成gmon.out文件,(ps:如果当前目录之前有gmon.out文件,之前的文件会被覆盖);
  • 使用gprof工具分析生成的gmon.out文件,得出一份统计报告。

3、具体使用gprof:

下面编写一个小程序来使用一下gprof:
1. 编写test.cpp;
#include <iostream>
using namespace std;


// do nothing
void Loop()
{
    int count = 0;
    for(; count < 20000000; ++count);
}

// call Loop inside
void Loop1()
{
    int count = 0;
    for(; count
  • 14
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值