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.