Estoy usando perf record -gLinux x86-64 para perfilar un programa. Varios símbolos en libc o libstdc ++ tienen 0como 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 dwarfresuelve 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.