2010-05-03 17 views
7

No entiendo la documentación de gprof con respecto a cómo compilar su programa para crear perfiles con gprof. En g ++, es necesario compilar con la opción -g (información de depuración) además de la opción -pg o no. En cada caso obtengo resultados diferentes, y me gustaría ver dónde están los cuellos de botella en mi aplicación en modo de lanzamiento, no en modo de depuración, donde el compilador omite muchas optimizaciones (por ejemplo, en línea)Compilación en g ++ para gprof

+0

http://stackoverflow.com/questions/1777556/alternatives-to-gprof/1779343#1779343 –

+1

'-g' no significa que las optimizaciones estén desactivadas. '-O' controla la opimización. Puede compilar tanto '-g' como' -O2' por ejemplo. –

Respuesta

5

muestra documentation que puede hacer cualquiera de los dos, teniendo en cuenta que necesita -g para line by line profiling. Por lo tanto, si desea crear un perfil en condiciones de publicación y puede aceptar no hacer línea por línea, debería poder compilar sin -g.

+0

Solo me interesan las llamadas a funciones, no los perfiles línea a línea. Sin la opción -g, muchas funciones que se están llamando no aparecen. No creo que esto se deba a la inclusión, porque muchos de esos métodos son grandes (más de 50 líneas de código). – myahya

+1

@myahya, creo que muy bien puede estar en línea. Por defecto, GCC puede alinear funciones de hasta 400 instrucciones internas de GCC (sé que estas no se asignan directamente a líneas de código); ver http://bazaar.launchpad.net/~vcs-imports/gcc/trunk/annotate/99780/gcc/params.def#L58. Además, ¿qué banderas de compilación estás usando? –

Cuestiones relacionadas