Estoy usando perf record -g
Linux x86-64 para perfilar un programa. Varios símbolos en libc o libstdc ++ tienen 0
como padre: __GI___strcmp_ssse3
(libc) y strcmp@plt
(libstdc ++) por ejemplo. (De hecho, puedo romper estos símbolos en el depurador y obtener una traza inversa).
Me encantaría saber cuáles son las principales llamadas de estas funciones y por qué no están grabadas. ¿Es esto porque libc y libstdc ++ no tienen punteros de trama en x86_64? Y, más prácticamente, ¿hay alguna forma de evitar esto?
perf record --call-graph dwarf
resuelve este problema para mí desafortunadamente, parece que perf tiene problemas para mostrar gráficos de llamadas basados en llamadas (es decir, "invertidos") cuando se utiliza información enana. Es por eso que comencé a usar FlameGraph para la visualización.