2010-05-30 15 views
5

Estoy tratando de perfilar una biblioteca compartida en GNU/Linux que hace procesamiento de audio en tiempo real, por lo que el rendimiento es importante. Ejecuto otro programa que lo conecta a la entrada y salida de audio de mi sistema, y ​​lo perfilo con callgrind.¿Cómo obtengo callgrind para volcar información de línea de origen?

Mirando los resultados en KCacheGrind, obtengo gran información acerca de qué funciones están ocupando la mayor parte de mi tiempo. Sin embargo, no me deja ver la información de línea por línea, y en su lugar dice que necesito compilarla con símbolos de depuración y volver a ejecutar el perfil.

El programa que estoy perfilando no está compilado con símbolos de depuración, pero la biblioteca sí lo está. Y sé esto, porque curiosamente, las anotaciones de código fuente para cachegrind funcionan bien.

Cuando ejecuto callgrind, dice que el valor predeterminado es volcar la información de la línea fuente, pero simplemente no está haciendo eso. ¿Hay alguna manera de forzarlo o averiguar qué lo detiene?

+7

Puede ser una pregunta estúpida, pero ¿puedes recompilar tu aplicación con símbolos de depuración? –

Respuesta

0

¿Está utilizando --dump-instr=yes --trace-jump=yes para obtener la información del nivel de instrucción?

+0

No estaba usando esas opciones, pero las estaba ejecutando nuevamente con esas opciones, todavía no puedo mostrar las líneas de origen. –

+2

Esas opciones muestran el nivel de instrucción de ensamblaje, no el nivel de fuente de C/C++. – jluzwick

Cuestiones relacionadas