![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
GProf y amigos (Prof, etc)LinuxGNU Profiler (GProf)Tutorial Resumen:
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 OProfileOProfile 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".
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 Cachegrindcachegrind Una utilidad del grupo de herramientas del valgrind. Se suele usar junto con el kcachegrind. HP-UXSe 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. |