我想知道gprof中是否有任何API可以在受监控的应用程序启用和禁用运行时分析.我有兴趣禁用代码的某些部分的分析,并使其能够专注于那些我感兴趣的代码.我的意思是,有没有办法避免这样做?
int main (void)
{
// disable gprof ?
uninteresting_routine();
// enable gprof ?
interesting_routine();
}
来自GCC网站的link引用的检测选项似乎并未包含对此功能的任何引用.
最佳答案 有一种无证的隐藏方式可以在某些系统上运行(至少有一些(如果不是全部)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没有此功能的原型或手册页,但确实存在.