我想分析我的代码。所以我这样做:
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[])
最佳答案
转到查看 -> 分组并选择 ELF 对象。在相应的工具 View 中选择您的应用程序/库 ELF 对象,它将仅显示其中的函数。
虽然您将无法获得所需的输出。您无法使用 Valgrind 测量时间,它仅计算指令数并可以估计周期数和缓存未命中数。而且 callgrind 也不显示完整的函数签名,它总是会丢弃参数,只显示函数名。
关于c++ - Kcachegrind。仅显示我的代码中的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40305076/