J'utilise perf record -gsur x86-64 Linux pour profiler un programme. Plusieurs symboles dans libc ou libstdc ++ ont 0pour 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 dwarfré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.