Estou usando o perf record -g
Linux x86-64 para criar um perfil de um programa. Vários símbolos na libc ou libstdc ++ têm 0
como 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 dwarf
resolve 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.