View this PageEdit this PageUploads to this PageVersions of this PageHomeRecent ChangesSearchHelp Guide

GProf y amigos (Prof, etc)

Linux


GNU Profiler (GProf)


Tutorial

Resumen:
  1. Compilas con "-pg -static"
  2. Ejecutas el programa (p.ej. router), creará un gmon.out
  3. Conviertes el .out a un fichero legible con "gprof nombreprograma gmon.out > resultado.txt"

NOTA: según esta página, el gprof no funciona con programas que no estén enlazados estáticamente.

Ejemplo: en debian 5, ha servido con:
# apt-get install libc6-prof
$ gcc -pg -profile -g -DLINUX -DALLOC_ESTATICO -DTELEIND -I/opt/uimxdir/include -g -DALLOC_ESTATICO -DTELEIND -o InterfazPdiPtm Str2TiposSIV.o SicoSockets.o SicoDebug.o debugip.o InterfazPDI_PTM.o -L/usr/X11R6/lib -lXt -lX11 -lm ./libz.a -lSM -lICE -lXau -lXdmcp -ldl -lpthread
Es decir: se ha quitado el -lc y se han añadido -lSM -lICE -lXau -lXdmcp -ldl -lpthread, aparte de poner delante el -pg -profile (que pone implícitamente el -lc_p necesario para hacer profiling, es lo que se ha instalado con el paquete libc6-prof).

No hace falta instalar el libc6-prof en la máquina de destino, pero sí que ha de tener exactamente la misma libc que en la máquina en donde se compila.

Al ejecutar el programa en la máquina de destino se genera un gmon.out, que se interpreta haciendo:
$ gprof path_al_ejecutable gmon.out > informe.txt

OProfile


OProfile Como un GProf, pero bien hecho. Requiere compilar un módulo del kernel para el kernel en curso (en rhel viene de serie; hacer un "modprobe oprofile".


  • Otro tutorial bastante completo. Se echa en falta algún que otro ejemplo, pero...
Tutorial de Oprofile: el retorno

Para instalarlo:
# uname -a
Linux hojaruta-backup 2.6.24-etchnhalf.1-686 #1 SMP Mon Nov 23 20:29:26 CET 2009 i686 GNU/Linux
# scp metro@16.0.62.18:/incoming/libc6-prof_2.7-18_i386.deb /var/cache/apt/archives/
# dpkg -i /var/cache/apt/archives/libc6-prof_2.7-18_i386.deb
# scp metro@16.0.62.18:/incoming/oprofile_0.9.3-2_i386.deb /var/cache/apt/archives/
# apt-get install oprofile



Para hacerlo funcionar, hemos hecho:
# uname -a
Linux hojaruta-backup 2.6.24-etchnhalf.1-686 #1 SMP Mon Nov 23 20:29:26 CET 2009 i686 GNU/Linux
# modprobe oprofile
# opcontrol --setup --no-vmlinux
# opcontrol --start
# opcontrol --save=junk
# opreport --long-filenames
# opreport -l /home/siv/sun/InterfazPdiPtm
# opcontrol --shutdown


Cachegrind


cachegrind Una utilidad del grupo de herramientas del valgrind. Se suele usar junto con el kcachegrind.


HP-UX


Se usa el prof

Se activa compilando un "-p" en el makefile como una opción del CFLAGS, y con eso consigues que los ejecutables generen un mon.out con la información de qué función está ejecutando en cada momento.

Y para ver el mon.out se hace, estando en el mismo directorio que en mon.out:
 % prof /path/al/ejecutable

Y te pone por pantalla la información de profiling.