我目前正在尝试分析和调试正在使用的库的性能问题。因此,我编写了一个简短的C++
代码,该代码将使用该库的某些核心功能并在其上运行一个简单的计时器。
为了更深入,我现在开始使用带有--tool=callgrind
选项的valgrind。我使用kcachegrind
可视化结果。我以前已经做过,并且(基本上)知道它是如何工作的。
但是,我很惊讶地看到这样的模式:
main
|
myfunc()
|
_dl_runtime_resolve_xsave
此后,即使在列表中似乎可以看到更多低级函数,调用图也将停止。
我相信调用图的这种结构可能与使用多重处理的库有关,而我之前从未使用过valgrind。但是,使用google时,我找不到此特定函数调用的说明。
有人可以向我解释我在这里看到的内容,以及为什么在此函数调用中调用图似乎断开了吗?
答案 0 :(得分:2)
我认为在将共享库加载到程序中时会调用那些“ _dl_runtime_resolve *”函数。我通常会在每个库函数中看到其中之一,仅被调用一次或两次。 我只是忽略它们。