В настоящее время я пытаюсь проанализировать и отладить проблемы производительности используемой библиотеки.По этой причине я написал короткий код C++
, который использовал бы некоторые основные функции этой библиотеки и запустил простой таймер.
Для более глубокого погружения я теперь начал использовать valgrindс опцией --tool=callgrind
.Я визуализирую результаты, используя kcachegrind
.Я делал это раньше и знаю (в принципе), как это работает.
Однако, я был очень удивлен, увидев такую схему:
main
|
myfunc()
|
_dl_runtime_resolve_xsave
После этого граф вызовов простоостанавливается, хотя я могу показать в списке гораздо больше низкоуровневых функций.
Я считаю, что эта структура графа вызовов может быть связана с библиотекой, использующей многопроцессорность, для которой я раньше не использовал valgrind,Однако, используя Google, я не смог найти объяснения этому конкретному вызову функции.
Может кто-нибудь объяснить мне, что я здесь вижу, и почему график вызовов, по-видимому, отключен при вызове этой функции?