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

Cómo depurar programas ajenos y encontrar funcionalidades específicas

Estas en el tema de Cómo depurar programas ajenos y encontrar funcionalidades específicas en el foro de Programación General en Foros del Web. Hola a todos. Últimamente estoy empezando a interesarme por colaborar en algún proyecto de software libre y ya me estoy encontrando con algún problema... el ...
  #1 (permalink)  
Antiguo 21/02/2011, 13:54
 
Fecha de Ingreso: diciembre-2005
Ubicación: Redondela (Galicia)
Mensajes: 368
Antigüedad: 18 años, 4 meses
Puntos: 1
Cómo depurar programas ajenos y encontrar funcionalidades específicas

Hola a todos.

Últimamente estoy empezando a interesarme por colaborar en algún proyecto de software libre y ya me estoy encontrando con algún problema... el principal es que no conozco ningún tipo de metodología a seguir para encontrar regiones específicas de código en las aplicaciones grandes desarrolladas por otros.

Creo que con un ejemplo me entenderéis mejor. Para entender el funcionamiento del gnome-panel y sus applets simplemente me metí a saco en el código utilizando gdb y Nemiver (una interfaz gráfica sobre gdb) y lo recorrí viendo qué iba haciendo cada parte del código (cosas como registrar la aplicación en la sesión de Gnome, dibujado en pantalla, instanciamiento de los applets, etc). Pero hacer esto fue muy costoso, realmente gasté muchísimas horas para comprender un programa que en apariencia es simple.

Ahora bien, pongamos por caso que pretendo corregir un bug en Nautilus, el gestor de archivos de Gnome. Y de hecho así es, existe un bug con la forma en la que se posicionan los iconos en el escritorio cuando usas una configuración de monitor extendido —con dos monitores pero un solo escritorio, vamos.

Para encontrar el error tendré primero que encontrar la parte del código donde se realiza esta tarea específica, pero es que sencillamente me resulta imposible. No logro entender dónde se produce realmente el dibujado de los iconos del escritorio por parte de Nautilus —solo se que lo hace ese programa porque matándolo desaparecen, y ejecutándolo de nuevo vuelven a aparecer...

Por eso me gustaría saber si los más experimentados utilizáis algún tipo de técnica a la hora de encontrar este tipo de funcionalidades específicas que sabes que realiza un proceso pero no sabes dónde. ¿Simplemente entráis en el código por el principio y navegáis y navegáis con el depurador hasta pasar por encima de la región de código que muestra indicios de estar haciendo lo que buscáis? Puede ser como buscar una aguja en un pajar... horas y horas y horas :S

A parte de vuestras experiencias al respecto, me gustaría saber si conocéis algún libro/tutorial/documentación que explique las tácticas a seguir en estos casos.

Un saludo y gracias por vuestro tiempo.
  #2 (permalink)  
Antiguo 23/02/2011, 11:15
 
Fecha de Ingreso: noviembre-2009
Mensajes: 186
Antigüedad: 14 años, 5 meses
Puntos: 2
Respuesta: Cómo depurar programas ajenos y encontrar funcionalidades específicas

Quizás puedas encontrar alguna guía sobre la organización del código de nautilus (en las carpetas de el código fuente), y así saber más o menos en que archivos buscar
  #3 (permalink)  
Antiguo 10/03/2011, 14:58
 
Fecha de Ingreso: diciembre-2005
Ubicación: Redondela (Galicia)
Mensajes: 368
Antigüedad: 18 años, 4 meses
Puntos: 1
Respuesta: Cómo depurar programas ajenos y encontrar funcionalidades específicas

Buena idea, ya que sí hay una guía, como tú dices. Lo malo es que es realmente poco detallada... pero bueno, algo es algo.

Encontré bastante útil también el escaneo del código fuente al completo mediante grep, buscando por palabras relacionadas con lo que busco acaba apareciendo algo, ya sea por comentarios o por los nombres de las funciones.

Un saludo y gracias.

Etiquetas: depuracion
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 01:41.