Provided by:
manpages-es-extra_0.8a-17_all 
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'ON
gprof produce un perfil de ejecucion 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 omision) que es creado por
programas que se han compilado con la opcion -pg de cc(1), pc(1), y
f77(1). La opcion -pg tambien enlaza al programa versiones de las
rutinas de biblioteca que estan compiladas para la perfilacion. Gprof
lee el fichero objeto dado (el predeterminado es `a.out') y establece
la relacion entre su tabla de simbolos y el perfil de grafo de llamadas
de `gmon.out'. Si se especifica mas de un fichero de perfil, la salida
de gprof muestra la suma de la informacion de perfilado en los ficheros
de perfil dados.
Gprof calcula la cantidad de tiempo empleado en cada rutina. Despues,
estos tiempos se propagan a lo largo de los vertices 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 funcion se muestran sus hijos (directos) del grafo de
llamadas, y como sus tiempos se propagan a esta funcion. Un despliegue
similar sobre la funcion muestra como el tiempo de esta funcion y el de
sus descendientes se propagan a sus padres (directos) del grafo de
llamadas.
Tambien 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
numero de llamadas del ciclo.
En segundo lugar, se da un perfil plano, similar al producido por
prof(1). Este listado de los tiempos de ejecucion totales, los numeros
de llamadas, el tiempo en milisegundos que la llamada empleo en la
propia rutina, y el tiempo en ms que la llamada empleo en la propia
rutina pero incluyendo sus descendientes.
Finalmente, se proporciona un indice de los nombres de funcion.
OPCIONES
Se dispone de las siguientes opciones:
-a suprime la impresion de las funciones declaradas estaticamente.
Si se da esta opcion, toda la informacion de interes sobre la
funcion estatica (static) (p.ej.: muestras de tiempo, llamadas a
otras funciones, llamadas desde otras funciones) pertenece a la
funcion cargada justo antes de la funcion estatica en el fichero
`fichobj'.
-b suprime la impresion de una descripcion de cada campo en el
perfil.
-c el grafo de llamadas estatico del programa se descubre mediante
un metodo heuristico que examina el espacio de texto del fichero
objeto. Los padres o hijos estaticos se muestran con numeros de
llamadas 0.
-e nombre
suprime la impresion 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 mas de una
opcion -e. Solo un nombre se puede dar con cada opcion -e.
-E nombre
suprime la impresion de la entrada de perfil de grafo para la
rutina nombre (y sus descendientes) como -e, arriba, y tambien
excluye el tiempo transcurrido en nombre (y sus descendientes)
de los calculos 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 solo la rutina
especificada en nombre y sus descendientes. Se puede dar mas de
una opcion -f. Solo se puede dar un nombre con cada opcion -f.
-F nombre
imprime la entrada del perfil de grafo de solo la rutina nombre
y sus descendientes (como -f, arriba) y tamiben emplea solo los
tiempos de las rutinas mostradas en los calculos de total y
porcentaje de tiempos. Se puede dar mas de una opcion -F. Solo
un nombre se puede dar con cada opcion -F. La opcion -F tiene
preferencia sobre la -E.
-k nombreorigen nombredestino
borrara cualesquiera arcos desde la rutina nombreorigen a la
rutina nombredestino. Esto puede emplearse para romper ciclos
no deseados. Se puede dar mas de una opcion -k. Solo se puede
dar un par de nombres de rutina con cada opcion -k.
-s se produce un fichero de perfil llamado `gmon.sum' que
representa la suma de la informacion de perfil en todos los
ficheros de perfil especificados. Este fichero de sumario de
perfil se puede pasar mas tarde a otras ejecuciones de gprof
(probablemente tambien con -s) para acumular datos de perfilado
entre varias ejecuciones de un fichero `fichobj'.
-v muestra el numero de version de gprof, y luego acaba.
-z muestra rutinas con utilizacion cero (segun se muestra en los
numeros de llamada y tiempo acumulado). Esto es util con la
opcion -c para descubrir que rutinas no se llaman nunca.
FICHEROS
a.out la lista de nombres y espacio de texto.
gmon.out grafo de llamadas dinamico y perfil.
gmon.sum resumen de grafo de llamadas dinamico y perfil.
V'EASE TAMBI'EN
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, No 6, pp. 120-126, Junio de
1982.
HISTORIA
Gprof aparecio en 4.2 BSD.
FALLOS
Se muestra la granularidad del muestreo, pero como mucho permanece
estadistica. Suponemos que el tiempo para cada ejecucion de una
funcion se puede expresar por el tiempo total para la funcion dividido
por el numero de veces que la funcion es llamada. Asi el tiempo
propagado a traves de los arcos del grafo de llamadas a los padres de
la fnucion es directamente proporcional al numero de veces que ese arco
es atravesado.
Los padres que no son ellos mismos perfilados tendran el tiempo de sus
hijos perfilados propagados a ellos, pero apareceran como invocados
espontaneamente en el listado de grafo de llamadas, y su tiempo no sera
propagado mas alla. Similarmente, los capturadores de senales, aunque
se perfilen, apareceran como espontaneos (aunque por razones mas
oscuras). Cualesquier hijos perfilados de capturadores de senal
deberian tener sus tiempos correctamente propagados, a menos que el
capturador de senal fuera invocado durante la ejecucion de la rutina
perfilandose, en cuyo caso se pierde todo.
El programa perfilado debe llamar a exit(2) o acabar normalmente para
que la informacion de perfil se guarde en el fichero `gmon.out'.
29 de Enero de 1993 GPROF(1)