Я використовую perf record -g
на x86-64 Linux для профілю програми. Кілька символів у libc або libstdc ++ є 0
як батьківські: __GI___strcmp_ssse3
(libc) та strcmp@plt
(libstdc ++), наприклад. (Я насправді можу зламати ці символи на відладчику і отримати зворотній слід.)
Мені б хотілося знати, що є основними абонентами цих функцій, і чому вони не записуються. Це тому, що libc та libstdc ++ не мають покажчиків кадру на x86_64? І, практичніше, чи існує якийсь шлях до цього?
perf record --call-graph dwarf
вирішує цю проблему для мене. на жаль, схоже, що у perf виникають проблеми із відображенням графіків викликів на основі виклику (тобто "перевернутого") при використанні карликової інформації. Тому я почав використовувати FlameGraph для візуалізації.