Foros del Web » Programación para mayores de 30 ;) » Programación General »

Como ver el código de las bibliotecas externas al depurar un programa

Estas en el tema de Como ver el código de las bibliotecas externas al depurar un programa en el foro de Programación General en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 24/03/2010, 13:37
 
Fecha de Ingreso: diciembre-2005
Ubicación: Redondela (Galicia)
Mensajes: 368
Antigüedad: 16 años, 6 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.
  #2 (permalink)  
Antiguo 28/03/2010, 13:33
 
Fecha de Ingreso: diciembre-2005
Ubicación: Redondela (Galicia)
Mensajes: 368
Antigüedad: 16 años, 6 meses
Puntos: 1
Respuesta: Como ver el código de las bibliotecas externas al depurar un programa

Bueno... la cosa era más simple de lo que yo creía xDDDD. Me contesto a mí mismo por si le sirve a alguien de algo.

Ya que Nemiver estaba buscando ciertos archivos inexistentes pensé que quizá poniendo dichos archivos donde él los buscaba la cosa empezaría a funcionar. Y así fue xDD.

De hecho la idea me la dio el propio Nemiver. El programa tiene la opción Archivo -> Abrir archivo de fuentes..., la cual abre un cuadro de dialogo cuyas dos opciones son las de elegir dicho archivo de fuentes desde tu sistema de archivos o desde el ejecutable. Viendo la del ejecutable me encontré con esas rutas absolutas tan raras para mí... por lo que acabé asumiendo que el propio ejecutable del programa tiene información (supongo que como parte de la información de depuración) sobre dónde estaban los archivos que se utilizaron para construirlo.

Resumiendo: Le di a Nemiver lo que me pedía y ahora todo funciona automáticamente.

Por ejemplo: Como Nemiver me decía que los archivos de GTK+ estaban en /build/buildd/gtk+2.0-2.16.1/gtk/ creé /build/buildd y descargué gtk+ (2.16.1) desde la web del proyecto. Luego descomprimí el archivo en buildd con el nombre gtk+2.0-2.16.1 y ahora cuando trato de entrar en una función de GTK+ Nemiver carga el código fuente correspondiente y me muestra su ejecución paso a paso :)

Etiquetas: depurar, externas, programa, ver
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:55.