Mi programa C++ consume una gran cantidad de CPU, y más mientras se ejecuta. Solía Herramientas de rendimiento de Google al perfil uso de la CPU, y esto es lo que tengo:Cómo interpretar direcciones en herramientas de rendimiento de Google Perfil de CPU
(pprof) top
Total: 1343 samples
1330 99.0% 99.0% 1330 99.0% 0x0000000801dcb11c
7 0.5% 99.6% 7 0.5% 0x0000000801dcb11e
4 0.3% 99.9% 4 0.3% program::threadWorker
1 0.1% 99.9% 1 0.1% 0x0000000801dcb110
1 0.1% 100.0% 1 0.1% 0x00007fffffffffc0
Sin embargo, sólo 1 de los 5 procesos que se muestran aquí es un nombre de función real; el resto son direcciones. ¿Cómo puedo saber a qué se refieren estas direcciones? (Por supuesto, estoy más interesado en la primera dirección que se indica más arriba)
Editar: Así es como me encontré con el perfilador:
env CPUPROFILE=prof.out ./a.out
[kill program]
pprof ./a.out prof.out
Además, he encontrado la causa por la inspección de código. Pero aún sería bueno que el perfilador identificara la función culpable en lugar de una dirección.
He editado mi pregunta para incluir cómo ejecuté el generador de perfiles. Encontré la función culpable, que se declara en el mismo archivo y no desde una biblioteca compartida. – jules
@jules: ¿Te ayudó el generador de perfiles a encontrar la función culpable? –
@Mike Dunlavey: no, lo encontré por inspección de código porque mi programa es bastante pequeño. – jules