gprof

GPROF(1)                    General Commands Manual                   GPROF(1)



NOMBRE
       gprof - muestra datos de perfilado con grafo de llamadas

SINOPSIS
       gprof [ -abcsz ] [ -e|-E nombre ] [ -f|-F nombre ] [ -k nombreorigen
       nombredestino ] [ fichobj [ gmon.out ] ]

DESCRIPCIÃN
       gprof produce un perfil de ejecución de programas en C, Pascal o
       FORTRAN77.  El efecto de las rutinas llamadas se incorpora en el perfil
       de cada llamador. Los datos del perfil se toman del fichero de perfil
       de grafos de llamada (`gmon.out' por omisión) que es creado por
       programas que se han compilado con la opción -pg de cc(1), pc(1), y
       f77(1).  La opción -pg también enlaza al programa versiones de las
       rutinas de biblioteca que están compiladas para la perfilación.
       Gprof lee el fichero objeto dado (el predeterminado es `a.out') y
       establece la relación entre su tabla de sÃmbolos y el perfil de grafo
       de llamadas de `gmon.out'.  Si se especifica más de un fichero de
       perfil, la salida de gprof muestra la suma de la información de
       perfilado en los ficheros de perfil dados.

       Gprof calcula la cantidad de tiempo empleado en cada rutina.  Después,
       estos tiempos se propagan a lo largo de los vértices del grafo de
       llamadas. Se descubren los ciclos, y se hace que las llamadas dentro de
       un ciclo compartan el tiempo del ciclo.  El primer listado muestra las
       funciones clasificadas de acuerdo al tiempo que representan incluyendo
       el tiempo de sus descendientes en su grafo de llamadas.  Debajo de cada
       entrada de función se muestran sus hijos (directos) del grafo de
       llamadas, y cómo sus tiempos se propagan a esta función.  Un
       despliegue similar sobre la función muestra cómo el tiempo de esta
       función y el de sus descendientes se propagan a sus padres (directos)
       del grafo de llamadas.

       También se muestran los ciclos, con una entrada para el ciclo completo
       y un listado da los miembros del ciclo y sus contribuciones al tiempo y
       número de llamadas del ciclo.

       En segundo lugar, se da un perfil plano, similar al producido por
       prof(1).  Este listado de los tiempos de ejecución totales, los
       números de llamadas, el tiempo en milisegundos que la llamada empleó
       en la propia rutina, y el tiempo en ms que la llamada empleó en la
       propia rutina pero incluyendo sus descendientes.

       Finalmente, se proporciona un Ãndice de los nombres de función.

OPCIONES
       Se dispone de las siguientes opciones:

       -a     suprime la impresión de las funciones declaradas
              estáticamente.  Si se da esta opción, toda la información de
              interés sobre la función estática (static) (p.ej.: muestras
              de tiempo, llamadas a otras funciones, llamadas desde otras
              funciones) pertenece a la función cargada justo antes de la
              función estática en el fichero `fichobj'.

       -b     suprime la impresión de una descripción de cada campo en el
              perfil.

       -c     el grafo de llamadas estático del programa se descubre mediante
              un método heurÃstico que examina el espacio de texto del
              fichero objeto.  Los padres o hijos estáticos se muestran con
              números de llamadas 0.

       -e nombre
              suprime la impresión de la entrada de perfil de grafo para la
              rutina nombre y todos sus descendientes (a menos que tuvieran
              otros ancestros que no se supriman).  Se puede dar más de una
              opción -e.  Sólo un nombre se puede dar con cada opción -e.

       -E nombre
              suprime la impresión de la entrada de perfil de grafo para la
              rutina nombre (y sus descendientes) como -e, arriba, y también
              excluye el tiempo transcurrido en nombre (y sus descendientes)
              de los cálculos del total y del porcentaje de tiempo.  (Por
              ejemplo, -E mcount -E mcleanup es lo predeterminado.)

       -f nombre
              imprime la entrada del perfil de grafo de sólo la rutina
              especificada en nombre y sus descendientes.  Se puede dar más
              de una opción -f.  Sólo se puede dar un nombre con cada
              opción -f.

       -F nombre
              imprime la entrada del perfil de grafo de sólo la rutina nombre
              y sus descendientes (como -f, arriba) y tamibén emplea sólo
              los tiempos de las rutinas mostradas en los cálculos de total y
              porcentaje de tiempos.  Se puede dar más de una opción -F.
              Sólo un nombre se puede dar con cada opción -F.  La opción -F
              tiene preferencia sobre la -E.

       -k nombreorigen nombredestino
              borrará cualesquiera arcos desde la rutina nombreorigen a la
              rutina nombredestino.  Esto puede emplearse para romper ciclos
              no deseados.  Se puede dar más de una opción -k.  Sólo se
              puede dar un par de nombres de rutina con cada opción -k.

       -s     se produce un fichero de perfil llamado `gmon.sum' que
              representa la suma de la información de perfil en todos los
              ficheros de perfil especificados. Este fichero de sumario de
              perfil se puede pasar más tarde a otras ejecuciones de gprof
              (probablemente también con -s) para acumular datos de perfilado
              entre varias ejecuciones de un fichero `fichobj'.

       -v     muestra el número de versión de gprof, y luego acaba.

       -z     muestra rutinas con utilización cero (según se muestra en los
              números de llamada y tiempo acumulado).  Esto es útil con la
              opción -c para descubrir qué rutinas no se llaman nunca.

FICHEROS
       a.out    la lista de nombres y espacio de texto.
       gmon.out grafo de llamadas dinámico y perfil.
       gmon.sum resumen de grafo de llamadas dinámico y perfil.

VÃASE TAMBIÃN
       monitor(3), profil(2), cc(1), prof(1)

       ``An Execution Profiler for Modular Programs'', por S. Graham, P.
       Kessler, M. McKusick; Software - Practice and Experience, Vol. 13, pp.
       671-685, 1983.

       ``gprof: A Call Graph Execution Profiler'', por S. Graham, P. Kessler,
       M. McKusick; Proceedings of the SIGPLAN '82 Symposium on Compiler
       Construction, SIGPLAN Notices, Vol. 17, Nº  6, pp. 120-126, Junio de
       1982.

HISTORIA
       Gprof apareció en 4.2 BSD.

FALLOS
       Se muestra la granularidad del muestreo, pero como mucho permanece
       estadÃstica.  Suponemos que el tiempo para cada ejecución de una
       función se puede expresar por el tiempo total para la función
       dividido por el número de veces que la función es llamada.  Asà el
       tiempo propagado a través de los arcos del grafo de llamadas a los
       padres de la fnución es directamente proporcional al número de veces
       que ese arco es atravesado.

       Los padres que no son ellos mismos perfilados tendrán el tiempo de sus
       hijos perfilados propagados a ellos, pero aparecerán como invocados
       espontáneamente en el listado de grafo de llamadas, y su tiempo no
       será propagado más allá.  Similarmente, los capturadores de
       señales, aunque se perfilen, aparecerán como espontáneos (aunque por
       razones más oscuras).  Cualesquier hijos perfilados de capturadores de
       señal deberÃan tener sus tiempos correctamente propagados, a menos que
       el capturador de señal fuera invocado durante la ejecución de la
       rutina perfilándose, en cuyo caso se  pierde todo.

       El programa perfilado debe llamar a exit(2) o acabar normalmente para
       que la información de perfil se guarde en el fichero `gmon.out'.



                              29 de Enero de 1993                     GPROF(1)