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)