martes, agosto 29, 2006

Obtener backtraces de KDE en Gentoo Linux

Más de una vez he necesitado obtener un backtrace de una aplicación de KDE tras un crash de la misma, para crear enviar un informe de fallo a los desarrolladores.

Cuando el crash ocurre en una aplicación, KDE muestra un diálogo desde el que se puede seleccionar el backtrace. Desafortunadamente, el código que se lista puede ser totalmente inútil si la aplicación y librerías no se han compilado en modo debug, y con las opciones correctas para el compilador. Es fácil de saber si la traza es inútil, ya que estará llena de symbol not found o cosas parecidas por todos los sitios.

En Gentoo, cuando queremos depurar un paquete, tendríamos primeramente que cambiar un par de cosas en el fichero /etc/make.conf.

- En las opciones de CFLAGS tenemos que asegurarnos que no aparezca la opción -fomit-frame-pointer.

Además, la variable de entorno FEATURES debe contener al menos la opción nostrip.

Ya tenemos preparadas las opciones de compilación. Ahora hay que recompilar los paquetes necesarios. Las kdelibs siempre va a ser necesaria de compilarla en este modo. Y luego las aplicaciones o paquetes que sean. Eso sí, incluyendo la USE="debug" como opción para el emerge.

Por ejemplo, para obtener una traza de kmail yo he tenido que hacer:

USE="debug" emerge kdelibs kdepim

No olvidéis eliminar los cambios del make.conf cuando ya no queráis compilar paquetes en modo debug, ya que compilar de ese modo hace que las aplicaciones funcionen más lentas. Una vez eliminado del make.conf y tras obtener todas las trazas necesarias podemos volver al modo original recompilando otra vez kdelibs y el resto de paquetes.

No hay comentarios: