在运行时启用和禁用gprof?

时间:2016-09-30 10:24:52

标签: c performance gprof

我想知道=中是否有任何API可以在受监控的应用程序启用和禁用运行时分析。我有兴趣禁用代码的某些部分的分析,并使其能够专注于那些我感兴趣的代码。我的意思是,有没有办法避免这样做?

gprof

来自GCC网站的link引用检测选项似乎并未包含对此功能的任何引用。

2 个答案:

答案 0 :(得分:2)

有一种无证的隐藏方式可以在某些系统上运行(至少有一些,如果不是全部的话,那些glibc和一些BSD都可以使用。)

$ cat foo.c
extern void moncontrol(int);

static void
foo(void)
{
}

static void
bar(void)
{
}

int
main(int argc, char **argv)
{
    moncontrol(0);
    foo();
    moncontrol(1);
    bar();
    return 0;
}
$ cc -o foo -pg foo.c && ./foo
$ gprof foo | egrep 'foo|bar'
  0.00      0.00     0.00        1     0.00     0.00  bar
[1]      0.0    0.00    0.00       1         bar [1]
   [1] bar

Glibc没有此功能的原型或手册页,但确实存在。

答案 1 :(得分:0)

接受的答案是正确的。只是想提醒C ++程序员使用

extern "C" void moncontrol(int);