Me preguntaba cuáles son algunas técnicas para localizar qué código implementó una característica específica, en una aplicación de escritorio.
Soy un desarrollador junior, con solo experiencia profesional en programación en torno a la programación web. En la Web es más fácil hacer eso. Por ejemplo, "inspecciona" un botón con las herramientas del navegador y puede ver lo que se está haciendo al hacer clic en él. Y luego, suponiendo que tenga el código fuente completo, puede profundizar en la jerarquía de las llamadas.
Pero, ¿cómo se hace esto en las aplicaciones de escritorio? Al menos, sin tener que sumergirse en la base de código completa?
debugging
desktop-application
py_script
fuente
fuente
Respuestas:
Rastreo de la espalda
El rastreo posterior es localizar un punto final a un evento asociado con la función (ver más abajo). Una vez allí, se coloca un punto de interrupción en el depurador. La función se activa y cuando se detiene el depurador. La pila de llamadas se revisa para rastrear la ruta de llamada. Mientras camina por la pila de llamadas, puede tomar notas sobre estados variables o colocar nuevos puntos de interrupción para inspeccionar el evento nuevamente.
La característica se activa nuevamente y el depurador se detiene en los nuevos puntos de interrupción. Luego puede repetir el rastreo hacia atrás o realizar el rastreo hacia adelante hasta encontrar el objetivo.
Pros contras
Descubrimiento de punto final
Para depurar una función, debe saber en qué parte del código fuente se alcanza el objetivo final. Solo desde este punto puede retroceder para ver cómo llegó el código allí. Un ejemplo; Para entender cómo se realiza deshacer. Sabes en qué parte del código se deshacen las cosas, pero no sabes cómo llegan las cosas allí . Este sería un candidato para retroceder para descubrir cómo funciona la característica.
Seguimiento hacia adelante
El seguimiento hacia adelante es localizar un punto de inicio para un evento asociado con una función (ver más abajo). Una vez allí, los mensajes de registro se insertan en el código fuente o se establecen puntos de interrupción. Este proceso se repite a medida que avanza más lejos del punto de inicio hasta que descubre el objetivo de la función.
Pros contras
Punto de inicio de descubrimiento
Puede usar palabras clave, identificadores de interfaz de usuario (ID de botones, nombres de ventanas) o oyentes de eventos fáciles de encontrar asociados con la función. Por ejemplo, puede comenzar con el botón utilizado para activar una función de deshacer .
Proceso de eliminación
Puede pensar en esto como el punto medio en comparación con las posiciones de punto inicial y final . Realiza un proceso de eliminación cuando ya sabe que se utiliza un fragmento de código en una característica, pero no es ni el inicio ni el final de la característica.
La dirección que tome desde el punto medio depende del número de entradas y salidas. Si el fragmento de código se usa en muchos lugares, entonces el rastreo desde esta posición puede llevar mucho tiempo, ya que todos deben ser inspeccionados. Luego emplea un proceso de eliminación para reducir esta lista. Alternativamente, puede realizar un rastreo hacia adelante desde este punto, pero nuevamente si el fragmento de código se ramifica en muchos lugares, esto también puede ser un problema.
Debe reducir las direcciones de posición al no seguir rutas que claramente no se ejecutarían para la función. Pasando este código y solo colocando puntos de interrupción donde probablemente esté relacionado con la característica.
La depuración del punto medio a menudo requiere características IDE más avanzadas. La capacidad de ver la jerarquía de código y las dependencias. Sin esas herramientas es difícil de hacer.
Pros contras
fuente
Suponiendo que la función está vinculada a algunas cosas de la interfaz de usuario, como un botón o menú, lo que tiendo a hacer sigue (muy tedioso pero funciona). Esto está mirando a través del Código Fuente, no usando un depurador .
SUPER_BUTTON_3 = "Super Feature X3"
. Para referencia futura, recuerde este nombre de archivo.Como señaló @amon, a veces un depurador es más simple ...
fuente
Si puede encontrar algún código relacionado, puede usar su software de control de origen para mostrarle el compromiso completo o los compromisos cercanos que lo agregaron. Eso debería mostrarle todo lo que se requería para implementar esa característica.
Una manera fácil de encontrar algún punto de partida para buscar sería buscar en su base de código buscando el texto en el botón.
A menudo, las personas colocarán una identificación de problema de su rastreador de problemas en sus mensajes de confirmación. Si puede encontrar un problema que describa la solicitud de función, puede buscar confirmaciones con esa identificación de problema.
fuente