J'utilise perf record -g
sur x86-64 Linux pour profiler un programme. Plusieurs symboles dans libc ou libstdc ++ ont 0
pour parent: __GI___strcmp_ssse3
(libc) et strcmp@plt
(libstdc ++) par exemple. (Je peux en fait casser ces symboles dans le débogueur et obtenir une trace.)
J'aimerais savoir quels sont les principaux appelants de ces fonctions et pourquoi elles ne sont pas enregistrées. Est-ce parce que libc et libstdc ++ n'ont pas de pointeurs de trame sur x86_64? Et, plus concrètement, y a-t-il un moyen de contourner cela?
perf record --call-graph dwarf
résout ce problème pour moi. malheureusement, il semble que perf ait des problèmes pour afficher des graphiques d'appel basés sur l'appelant (c'est-à-dire "inversés") lors de l'utilisation d'informations naines. C'est pourquoi j'ai commencé à utiliser FlameGraph pour la visualisation.