Provided by: manpages-es-extra_0.8a-19_all bug

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)