我想分析一下我的代码。所以我这么做了:
valgrind --tool=callgrind my_program [programm arguments]
kcachegrind callgrind.out.x现在我有了这样的kcachegrind窗口:

有很多核心函数和库函数,但是我如何设置valgrind或kcachegrind来跟踪我的代码中只有函数(当然是调用库函数)?
预期的输出是这样的:
time number of calls function_name()
4,52% 569854 CSim2Sim my_function1(int argc, char* argv[])
3,52% 452158 CSim2Sim my_function2(int argc, char* argv[])
3,52% 36569 CSim2Sim my_function3(int argc, char* argv[])
1,52% 1258 CSim2Sim my_function4(int argc, char* argv[])发布于 2016-11-07 17:26:05
转到查看ELF分组并选择->对象。在相应的工具视图中,选择您的应用程序/库ELF对象,它将只显示其中的函数。
但是,您将无法获得所需的输出。您不能使用Valgrind测量时间,它只计算指令数,并且可以估计周期计数和缓存未命中。而且callgrind也不会显示完整的函数签名,它总是会删除参数,只显示函数名。
发布于 2016-11-03 12:57:49
Valgrind提供了工具来抑制特定对象文件或某些库中特定错误或错误。检查此link。
按照此说明,您可以准备您的抑制文件(如a.supp)并将其传递给valgrind
valgrind --tool=callgrind --suppressions=/path/to/a。支持my_program程序参数
我没有使用过kcachegrind,但我确信它一定提供了一些工具来更改valgrind的命令行选项。
发布于 2016-10-28 23:16:28
当你在os x上时,你可以试试profilingviewer,它可以隐藏基于可定制预设的系统功能。

https://stackoverflow.com/questions/40305076
复制相似问题