4

我目前正在尝试分析和调试我正在使用的库的性能问题。出于这个原因,我编写了一个简短的C++代码,它将使用该库的一些核心功能并在其上运行一个简单的计时器。

为了更深入地了解,我现在开始使用带有--tool=callgrind选项的 valgrind。我使用kcachegrind. 我以前做过,并且(原则上)知道这是如何工作的。

但是,看到这样的模式,我感到非常惊讶:

main
  |
myfunc()
  |
_dl_runtime_resolve_xsave

在此之后,调用图就停止了,尽管我可以在列表中看到更多的低级函数。

我相信调用图的这种结构可能与使用多处理的库有关,对此我之前没有使用过 valgrind。但是,使用谷歌,我无法找到这个特定函数调用的解释。

有人可以向我解释我在这里看到的内容,以及为什么调用图在这个函数调用中似乎断开了连接吗?

4

1 回答 1

2

我认为当您将共享库加载到程序中时,会调用那些“_dl_runtime_resolve*”函数。我通常会在每个库函数中看到其中一个,只调用一次或两次。我会忽略它们。

于 2018-09-01T10:32:40.123 回答