Kcachegrind.仅显示我的代码中的函数

Ken*_*tov 10 c++ valgrind callgrind kcachegrind

我想描述一下我的代码.所以我这样做:

valgrind --tool=callgrind my_program [programm arguments]
kcachegrind callgrind.out.x
Run Code Online (Sandbox Code Playgroud)

现在我有这样的kcachegrind窗口:

在此输入图像描述

有很多核心和库函数,但是我如何设置valgrindkcachegrind仅跟踪函数在我的代码中(当然,它还有调用库函数)?

预期的输出是这样的:

  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[])
Run Code Online (Sandbox Code Playgroud)

mil*_*anw 5

转到查看 -> 分组并选择 ELF 对象。在相应的工具视图中选择您的应用程序/库 ELF 对象,它将仅显示其中的功能。

但是,您将无法获得所需的输出。你不能用 Valgrind 来测量时间,它只计算指令并且可以估计循环计数和缓存未命中。而且 callgrind 也不会向您显示完整的函数签名,它会始终删除参数而只显示函数名称。


use*_*525 1

当您在 os x 上时,您可以尝试profilingviewer,它可以根据可自定义的预设隐藏系统功能。

在此输入图像描述