【问题标题】:How to start and stop collecting profile data for gprof如何开始和停止为 gprof 收集配置文件数据
【发布时间】:2015-10-09 12:19:06
【问题描述】:

我正在使用 gprof 分析 C++ 程序的平面轮廓。但是,由于我不想进入配置文件的昂贵的设置和拆卸代码,我想触发仅针对某个块收集数据。我想做类似的事情:

void foo() {
 --- start collecting ---
  do stuff
 --- stop collecting
}

有什么想法吗?

【问题讨论】:

    标签: c++ gcc g++ profiling gprof


    【解决方案1】:

    gprof 的文档描述了分析数据的生成由一个简单的-pg 编译器开关控制。

    因此,在我看来,将昂贵的设置和拆卸代码分解到单独的源文件中,并在没有-pg 编译器开关的情况下编译该源文件,这似乎是合乎逻辑的。

    【讨论】:

    • gprof 有两个数据源:来自 itimer 的周期性样本(setitimer 将要求内核每秒发送 100 次特殊信号;低开销)以获取配置文件;和来自编译器工具的调用图信息(每次调用的高开销)。为某些源关闭 -pg 将仅禁用第二个数据源,这将加速该文件中的代码,但不会完全关闭分析。 (第一个源应该通过 -pg 选项启用到链接步骤以获取 gmon.out 文件)
    【解决方案2】:

    您必须使用 -pg 在不同的源中构建您的关键功能,然后

    【讨论】:

      猜你喜欢
      • 2011-09-13
      • 1970-01-01
      • 2021-08-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多