Seguimiento posterior
El seguimiento hacia atrás es ubicar un punto final en 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 característica se activa y cuando el depurador se detiene. La pila de llamadas se revisa para rastrear la ruta de la llamada. Mientras recorre la pila de llamadas, puede tomar notas sobre estados variables o colocar nuevos puntos de interrupción para inspeccionar el evento nuevamente.
La función vuelve a activarse y el depurador se detiene en los nuevos puntos de interrupción. A continuación, puede repetir rastreo de retroceso o realizar rastreo de avance hasta que se encuentre el objetivo.
Pros y amp; Contras
- Siempre es más fácil subir la pila de llamadas y ver cómo llegaste a alguna parte.
- Puede haber millones de condiciones que deben cumplirse antes de llegar a un punto final. Si ya conoces el punto final, te has ahorrado mucho trabajo.
- Si la característica está rota. Es posible que nunca llegue al punto final, y se puede perder tiempo tratando de averiguar por qué.
Descubrimiento de puntos finales
Para depurar una característica, debe saber en qué parte del código fuente se alcanza el objetivo final. Solo desde este punto puedes retroceder para ver cómo llegó el código allí. Un ejemplo; Para entender cómo se realiza el deshacer. Sabes en qué parte del código se deshacen las cosas, pero no sabes cómo llegan las cosas . Esto sería un candidato para backtracing para averiguar cómo funciona la función.
Rastreo hacia adelante
El seguimiento hacia adelante está localizando 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 descubra el objetivo para la función.
Pros y amp; Contras
- Es el punto de inicio más fácil para encontrar una función.
- La complejidad del código reduce la eficacia del rastreo hacia adelante. Cuantas más condiciones haya en el código, mayor será la posibilidad de que vayas en la dirección equivocada.
- El seguimiento hacia adelante a menudo da como resultado la configuración de puntos de interrupción que se activarán por eventos no relacionados. Interrumpir el proceso de depuración e interferir con su búsqueda.
Descubrimiento del punto de inicio
Puede usar palabras clave, identificadores de interfaz de usuario (identificadores de botones, nombres de ventanas) o detectores de eventos fáciles de encontrar asociados con la función. Por ejemplo, podría comenzar con el botón que se usa para activar una función deshacer .
Proceso de eliminación
Puedes ver esto como el punto medio en comparación con las posiciones punto inicial y punto final . Realiza un proceso de eliminación cuando ya sabe que un fragmento de código se utiliza en una función, pero no es el principio ni el final de la función.
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 volver a rastrear desde esta posición podría llevar mucho tiempo, ya que todos tienen que ser inspeccionados. A continuación, emplee un proceso de eliminación para reducir esta lista. Como alternativa, puede realizar un rastreo hacia adelante desde este punto, pero nuevamente, si el fragmento de código se ramifica a muchos lugares, esto también puede ser un problema.
Tienes que reducir las direcciones de posición al no seguir rutas que claramente no se ejecutarán para la función. Mover más allá de este código y solo colocar puntos de interrupción donde probablemente esté relacionado con la función.
La depuración de
punto medio a menudo requiere más funciones IDE avanzadas. La capacidad de ver jerarquía de códigos y dependencias. Sin esas herramientas es difícil de hacer.
Pros y amp; Contras
-
Los puntos intermedios son a menudo el primer trozo de código que aparece en tu cabeza cuando piensas en la característica. Te dices a ti mismo "Ah, eso tiene que usar XXXX para funcionar".
-
Los puntos intermedios pueden revelar puntos de inicio lo más fácil.
-
Los puntos intermedios pueden ser una forma fácil de encontrar el camino a una función cuando se pierden por la sincronización o los cambios de subprocesos.
-
Los puntos intermedios pueden llevarlo al código con el que no está familiarizado. Le cuesta tiempo aprender lo que está pasando.