Estou usando o perf record -gLinux x86-64 para criar um perfil de um programa. Vários símbolos na libc ou libstdc ++ têm 0como pai: __GI___strcmp_ssse3(libc) e strcmp@plt(libstdc ++), por exemplo. (Na verdade, posso quebrar esses símbolos no depurador e obter um retorno.)
Gostaria muito de saber quais são os principais chamadores dessas funções e por que elas não são gravadas. Isso ocorre porque libc e libstdc ++ não possuem ponteiros de quadro no x86_64? E, mais praticamente, existe alguma maneira de contornar isso?
perf record --call-graph dwarfresolve esse problema para mim. infelizmente, parece que o perf tem problemas para exibir gráficos de chamadas baseados em chamadores (ou seja, "invertidos") ao usar informações de anões. Por isso comecei a usar o FlameGraph para visualização.