Provided by: manpages-es-extra_0.8a-16_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)