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窗口:
有很多核心和库函数,但是我如何设置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[])
Run Code Online (Sandbox Code Playgroud)
转到查看 -> 分组并选择 ELF 对象。在相应的工具视图中选择您的应用程序/库 ELF 对象,它将仅显示其中的功能。
但是,您将无法获得所需的输出。你不能用 Valgrind 来测量时间,它只计算指令并且可以估计循环计数和缓存未命中。而且 callgrind 也不会向您显示完整的函数签名,它会始终删除参数而只显示函数名称。