Appendix E. Depurando

Información General

Depurar es una habilidad que puede aprender. Hay varios buenos documentos que describen cómo hacer reportes de errores. Por favor lealos antes de entrar en acción, el bug no desaparecera ni tampoco lo matará. Preferentemente queremos matar al bug y queremos su ayuda, entonces vallamos a la batalla bien preparados. Dos buenos documentos son Bugzilla Bug Reporting HOWTO y el How to Report Bugs Effectively de Simon Tathams.

Debido a la naturaleza de algunos parches no oficiales, no podemos sportarlos a todos. Esto significa (para usted) que deberia chequear si Fluxbox se cuelga sin los parches que aplico. Si los parches de su Fluxbox fueron aplicados por algun administrador de su distribución, contactelo acerca de su resultado.

Si necesita mas ayuda con la depuración de la que esta guia provee, podria ver si alguna de las personas en el canal #fluxbox en irc.freenode.net puede ayudarlo. Como los principales desarrolladores y un grupo de gente calificada estan generalmente ahi, es posible que podamos resolver el problema.

Cosas específicas de Fluxbox

Salida de Fluxbox

Como toda otra aplicación Fluxbox envia todos los mensajes a la consola en la que fue iniciado. El problema es que en ciertas condiciones toda la salida va a la consola de texto. Cambie la linea de inicio de Fluxbox a exec xterm o el nombre del emulador de terminal preferido. Inicie X11 y luego inicie Fluxbox en esa xterm, y mirad, usted puede ver todos los mensajes con facilidad desde Fluxbox.

La información que queremos

Nosotros queremos saber muchas cosas. Asegurese de saberlas todas.

Qué hacer con copias de memoria del nucleo.

Si alguna vez obtiene una copia de la memoria del nucleo con Fluxbox (core dump) haga lo siguiente: Dirijase a el canal de #fluxbox en OPN y digale a "fluxgen" que obtuvo una copia de la memoria del nucleo. Suministre toda la información que el le pida. Probablemente él también le pedirá que haga lo siguiente. Es bastante trabajo pero cualquiera con un poco de sentido comun y algo de experiencia con Unix podra hacerlo. También necesitara el GNU debugger, llamado gdb.

Reconstruir Fluxbox

Si, leyo bien. Para convertirse en un verdadero depurador tendrá que reconstruir Fluxbox con los simbolos de depuración.

Construya Fluxbox como siempre lo hace y agregue las siguientes opciones cuando ejecute make:

    $ CFLAGS=-Wall -g3 CXXFLAGS=-Wall -g3 make

Si usa las fuentes en formato RPM del sitio de Fluxbox o su distribución puede hacer algo como esto:

    $ su
    # rpm -ivh fluxbox-0.1.11.1mdk.src.rpm
    # cd /usr/src/RPM/SPECS
    # env DEBUG=true rpm -ba fluxbox.spec
    # rpm -Uvh --force /usr/src/RPM/RPMS/i686/fluxbox*
    # exit
    $ mkdir -p ~/src/fluxbox
    $ cp -R /usr/src/RPM/BUILD/fluxbox* ~/src/fluxbox

Dirijase al directorio de Fluxbox (asi obtenemos el "core dump" en el directorio correcto). El shell tiene una ingeniosa característica que deshabilita los archivos de nucleo entonces asegurese de que realmente obtendra un archivo de nucleo con:

    $ ulimit -c unlimited

Inicie X11 y ha depurar. Haga lo que sea necesario para obtener el dump core de Fluxbox. Y ahora comenzamos a depurar:

    $ gdb fluxbox core

Ahora ingrese el siguiente comando en gdb (la primera parte es el prompt de gdb, no lo tipee :)):

    (gdb) where

Ahora obtendra mucha salida. Fluxgen quiere saber todas las salidas que inician con #.

Pegue esas lineas en un e-mail a Fluxgen y también adhiera los cuatro archivos de configuración en ~/.fluxbox/

Por favor no remueva el archivo dump core y el directorio del codigo todavia. Fluxgen puede necesitar preguntarle unas cuantas preguntas mas y necesitará estos archivos. Por favor no envie una copia del archivo dump core a Fluxgen si el especificamente no la pide - ya que este archivo es especifico a su sistema, probablemente no le sirva a el y los archivos de dump core tienden a ser bastante grandes.