Ver Mensaje Individual
  #1 (permalink)  
Antiguo 24/03/2010, 13:37
Sanva
 
Fecha de Ingreso: diciembre-2005
Ubicación: Redondela (Galicia)
Mensajes: 368
Antigüedad: 16 años, 7 meses
Puntos: 1
Pregunta Como ver el código de las bibliotecas externas al depurar un programa

Hola a todos!

Acabo de empezar hace poco a estudiar ciertas bibliotecas/aplicaciones del entorno Gnome en Linux, y me he encontrado con que los depuradores (debuggers, vamos) son una excelente herramienta para aprender, ya que al ver la aplicación ejecutándose es más fácil entender su lógica y porqué hace lo que hace —y como lo hace xD.

El problema que me encuentro es que, por ejemplo al depurar el gnome-panel, hay un montón de llamadas a funciones en bibliotecas externas (básicamente las de GTK+), y aunque muchas tienen un nombre muy descriptivo y de hecho sería imposible verlas todas sin desesperarse, algunas de ellas sería interesante verlas en acción. El problema es que el depurador no tiene información sobre el código de dichas bibliotecas así que al pasar por esas funciones sólo me muestra la línea en la que está —en el mejor de los casos, a veces ni eso.

He utilizado gdb desde su interfaz de texto y desde las interfaces gráficas del Anjuta y del Nemiver. Este último me ha encantado, y tiene un detalle que me ha hecho pensar en que quizá haya una forma automatizada para permitirle al depurador encontrar el código de estas bibliotecas externas y mostrarme la ejecución a través del mismo. Y es que por ejemplo al intentar entrar en una función llamada gtk_window_set_default_icon_name, el Nemiver me dice

Cita:
No se ha podido encontrar el archivo /build/buildd/gtk+2.0-2.16.1/gtk/gtkwindow.c
, y al tratar de entrar en XSetIOErrorHandler me suelta

Cita:
No se ha podido encontrar el archivo ../../src/ErrHndlr.c
Es decir, intenta buscar unos archivos que no encuentra... No se si estoy haciendo algo mal, hay algo que no entiendo o me falta instalar algo... porque es que mi sistema ni siquiera tiene las carpetas /build/buildd/, a las cuales el Nemiver trata de acceder en bastantes ocasiones al tratar de introducirme en alguna de estas funciones externas.

¿Alguna sugerencia? ¿Cómo hacéis vosotros para depurar este tipo de aplicaciones?

Un saludo y gracias por vuestro tiempo.