13.7.2 Depurar
13.7.2.1 Depurando con gdb
Preparaci�n:
# apt-get install gdb
Referencias para gdb
:
Utilice gdb
para depurar un programa compilado con la opci�n
-g. Muchos de los comandos se pueden abreviar. La expansi�n del
tabulador funciona de igual manera que en el shell.
$ gdb programa
(gdb) b 1 # coloca un punto de ruptura en la l�nea 1
(gdb) run arg1 arg2 arg3 # ejecuta programa
(gdb) next # va a la siguiente l�nea
...
(gdb) step # avanza un paso
...
(gdb) p parm # imprime par�metro
...
(gdb) p parm=12 # inicializa el valor del par�metro en 12
Para depurar dentro de Emacs, dir�jase a Resumen de los comandos del editor (Emacs,
Vim), Secci�n 11.3.4.
En un sistema Debian, la mayor�a de los s�mbolos de depuraci�n han sido
eliminados. Para que gdb
resulte �til para depurar paquetes
Debian, es necesario volver a construir dichos paquetes siguiendo los
siguientes pasos:
-
Edite debian/control
para volcar el paquete version
.
-
Verifique los scripts de creaci�n y aseg�rese usar CFLAGS=-g -Wall
para compilar los binarios.
-
Exporte DEB_BUILD_OPTIONS=nostrip,noopt para crear el paquete
Debian.
V�ase Policy
10.1
para mayor informaci�n.
13.7.2.2 Verificar dependencias con bibliotecas
Utilice ldd
para averiguar las dependencias de un programa con
respecto a las bibliotecas:
$ ldd /bin/ls
librt.so.1 => /lib/librt.so.1 (0x4001e000)
libc.so.6 => /lib/libc.so.6 (0x40030000)
libpthread.so.0 => /lib/libpthread.so.0 (0x40153000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
Para que ls
funcione en un entorno chroot
, deben esta
disponibles las mencionadas bibliotecas.
Pueden tambi�n resultar �tiles los siguientes comandos.
13.7.2.3 Depurar con herramientas de detecci�n de fugas de memoria
Existen diversas herramientas de detecci�n de fugas de memoria disponibles en
Debian.
-
njamd
-
valgrind
-
dmalloc
-
electric-fence
-
memprof
-
memwatch
(el paquete no existe, obt�ngalo de memwatch
.)
-
mpatrol
-
leaktracer
-
libgc6
-
Insure++ de Parasoft
. (propietario, commercial
for fee)
Tambi�n consulte Herramientas
de depuraci�n para la asignaci�n de almacenamiento din�mico y administraci�n de
memoria
.