按名称或签名计算函数调用。 Gcc,C ++

时间:2011-02-18 02:31:00

标签: c++ linux gcc profiling gdb

我有一些c ++编写的包。 Linux,gcc。我可以修改编译过程(更改Makefile,标志等),但可以更改C ++源代码。

使用不同的参数运行包,它可以完成工作并退出。

如何计数
1)具有特定名称的功能的呼叫次数?
2)具有特定签名的函数的调用次数?
3)函数的调用次数,其中一个参数是特定类型,即std :: string(类型由签名指定)?
4)和 extra STL对象函数的调用次数,即std :: string copy构造函数?

(我的意思是在跑步期间计算一些电话。)

我想用GDB做这件事,但我发现很难做到(1)并且根本没有找到如何做(2) - (4)。


我将在这里为人类写下所有可接受的答案。

2 个答案:

答案 0 :(得分:4)

您可以尝试在linux下运行DTRACE。对于你想要完成的任务来说,这绝对是一个很好的工具。

答案 1 :(得分:2)

你检查了Valgrind的callgrind吗?

如果您没有使用线程(或者愿意尝试一下),gprof在某些情况下非常容易。但是,线程有workaround