c++ - Kcachegrind。仅显示我的代码中的函数

标签 c++ valgrind callgrind kcachegrind

我想分析我的代码。所以我这样做:

valgrind --tool=callgrind my_program [programm arguments]
kcachegrind callgrind.out.x

现在我有这样的 kcachegrind 窗口:

enter image description here

有很多核心函数和库函数,但是我如何设置 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[])

最佳答案

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

虽然您将无法获得所需的输出。您无法使用 Valgrind 测量时间,它仅计算指令数并可以估计周期数和缓存​​未命中数。而且 callgrind 也不显示完整的函数签名,它总是会丢弃参数,只显示函数名。

关于c++ - Kcachegrind。仅显示我的代码中的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40305076/

相关文章:

c++ - libc++ 无法处理 fcgi streambuf

embedded - 在嵌入式项目中使用 Valgrind

multiprocessing - valgrind/callgrind : what is `_dl_runtime_resolve_xsave`

android - Qt Creator 2.8.1 在 Ubuntu 13.10 上看不到三星 galaxy s4

c++ - 初始化右值引用成员

c - 工作程序上有多个 valgrind "invalid read of size n"

C++ 分析 : clock cycle count

c++ - 在 callgrind 输出中解释 _dl_runtime_resolve_xsave'2

c++ - 空结构和非空结构中的显式默认构造函数

c - Valgrind 使用 getline() 给出错误