A continuación encontrarás traducido al castellano el artículo escrito por William Yu y publicado originalmente en el Blog oficial de Xojo.
La depuración de aplicaciones con Xojo ya volverá a ser simplemente avanzar paso a paso por el código, sino comprender cómo tus datos se comportan a lo largo del tiempo. Gracias a la nueva característica Watchpoints de Xojo ahora puedes monitorizar las variables y propiedades de los objetos de una forma más inteligente, sin la necesidad de tener que recorrer cada vez las líneas de tu código o añadir capacidades de logado simplemente para ver cuándo ha cambiado un valor determinado.
¿Qué son los Watchpoints?
Los Watchpoints te permiten pausar la ejecución cuando cambie el valor de una variable o propiedad. En vez de preguntarte “¿cómo he llegado aquí”, los Watchpoints te permitirán responder “¿cuándo ha cambiado esto?”.
Esto resulta especialmente útil cuando:
- Un valor es modificado de forma inesperada.
- Múltiples áreas de tu código interactúan con el mismo objeto.
- Estás tratando de hallar el origen de ciertos bugs relacionados con sutiles cambios de estado.
¿Cómo funcionan los Watchpoints?
Definir un watchpoint requiere pausar la ejecución donde querrías comenzar a monitorizar la variable o propiedad de un objeto.
Una vez que se ha definido un watchpoint para una variable o propiedad, en este ejemplo la variable countText, el depurador comenzará a registrar su valor durante la ejecución. Cuando dicho valor cambie, la ejecución se pausará y mostrará la línea que ha provocado dicho cambio.
Esto te permitirá conocer a simple vista:
- Qué código ha causado la modificación.
- Cuál era el valor previo y el nuevo valor.
- El aspecto del estado actual que lo rodea.
Por qué es importante
Típicamente, el hecho de registrar los cambios de un valor requería trazar línea a línea el código o bien añadir algún tipo de logado temporal. Ambos enfoques requieren de tiempo y están sujetos a errores.
Los watchpoints eliminan dicha fricción mediante:
- Reduciendo la necesidad de trazados repetitivos.
- Resaltando sólo los cambios significativos.
- Permitiéndote centrarte más rápido en el problema raíz.
- Gestionar la vida de los Objetos
Un detalle importa cuando se utilizan los watchpoints es la vida del objeto.
Si se crea un watchpoint sobre la propiedad de un objeto que sale de ámbito o es destruido, el depurador ya no podrá continuar registrando sus cambios. En estos casos, Xojo proporciona un feedback claro de modo que puedas saber que dicho watchpoint ya no es válido, junto con el último valor conocido.
Watchpoints condicionales
Los watchpoints en Xojo no se limitan a saltar con cada cambio, sino que puedes hacer que sean condicionales. Por ejemplo, puedes indicar que se detenga sólo cuando un valor sea igual a uno determinado, mayor que el indicado o bien menor que un rango indicado; o incluso cuando esté fuera de un rango determinado. Esto hace que resulte mucho más sencillo centrarse en los cambios que realmente interesan, especialmente cuando una variable se actualiza con frecuencia pero sólo se convierte en problemática bajo ciertas condiciones.
Para añadir una condición a un watchpoint, haz clic con el botón derecho sobre la variable que se esté observando y elige la opción “Edit Watchpoint Expression” en el menú contextual.
El editor de expresiones se adapta en función del tipo de variable o bien la propiedad que estés observando; proporcionando así pistas sobre el tipo de valores y condiciones que se pueden emplear.
Gestionando la vida de los Objetos
Un detalle importante cuando se utilizan los watchpoints es lo referente al ciclo de vida del objeto.
Si un watchpoint está asociado a una propiedad de un objeto que ya no está disponible (fuera de ámbito) o se ha destruido, el depurador ya no podrá continuar observando sus cambios. En estos casos Xojo proporciona información a través del panel Mensajes de modo que puedas conocer que dicho watchpoint ya no es válido, proporcionando en este caso el último valor conocido.
Lo que funciona… y lo que no
Puedes definir watchpoints sobre la mayoría de las variables y propiedades. Sin embargo, los Array, Estructuras y propiedades calculadas no están soportadas. Los watchpoints tampoco están disponibles actualmente en los proyectos Android.
Conclusiones
Los watchpoints proporcionan un nuevo nivel de precisión a la hora de depurar con Xojo. En vez de detectar los bugs revisando paso a paso el código, ahora puedes dejar que el depurador haga el trabajo y se pause exactamente cuando las cosas vayan mal.
Pruébalo en tu próxima sesión de depuración… ¡y puede que te encuentres resolviendo los problemas más rápido que nunca!