Herramientas de usuario

Herramientas del sitio


errores_comunes_con_beanshell

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anterior Revisión previa
Próxima revisión
Revisión previa
errores_comunes_con_beanshell [2011/05/01 13:26]
al-khwarizmi
errores_comunes_con_beanshell [2011/09/04 17:27] (actual)
al-khwarizmi
Línea 207: Línea 207:
 === Funcionalidad de depuración === === Funcionalidad de depuración ===
  
-AGE incluye la siguiente funcionalidad para ayudar a depurar ​aventuras:+AGE incluye la siguiente funcionalidad para ayudar a localizar y corregir errores en las aventuras:
  
 == Impresión de información de depuración en los parseCommand == == Impresión de información de depuración en los parseCommand ==
Línea 214: Línea 214:
  
 <code java> <code java>
-Debug.setEvalEnabled(true);+Debug.setCodeDebugging(true);
 </​code>​ </​code>​
  
Línea 229: Línea 229:
 y una vez activado, podemos utilizar la orden especial "​eval"​ en la aventura para obtener el valor de una expresión BeanShell en cualquier momento del juego. Por ejemplo, podríamos hacer y una vez activado, podemos utilizar la orden especial "​eval"​ en la aventura para obtener el valor de una expresión BeanShell en cualquier momento del juego. Por ejemplo, podríamos hacer
  
 +<​code>​
 eval 1+1 eval 1+1
 eval get ( mobile("​jugador"​) , "​cansado"​ ) eval get ( mobile("​jugador"​) , "​cansado"​ )
 eval item("​puerta roja"​).isClosed() eval item("​puerta roja"​).isClosed()
 eval mobile("​goblin"​).hasItem(item("​espada"​)) eval mobile("​goblin"​).hasItem(item("​espada"​))
 +</​code>​
  
 y nos aparecerá por pantalla el valor de esas expresiones en ese momento. y nos aparecerá por pantalla el valor de esas expresiones en ese momento.
 +
 +== Breakpoints ==
 +
 +Si queremos hacer una depuración de grano más fino, evaluando expresiones no sólo en los momentos en los que podemos introducir un comando sino en medio de la ejecución del código, podemos utilizar la funcionalidad de "​breakpoints"​ que proporciona AGE desde su versión 1.1.6b.
 +
 +Un breakpoint es un punto donde la ejecución de código (en este caso el código BeanShell) se pausa hasta que nosotros le indiquemos que continúe. Mientras la ejecución está pausada, podemos evaluar expresiones y ver qué valores toman las variables en ese punto de la ejecución.
 +
 +Para poner un breakpoint en nuestro código, sólo tenemos que ejecutar la función BeanShell
 +
 +<code java>​breakpoint();</​code>​
 +
 +O bien, si queremos darle un nombre al breakpoint para distinguirlo de otros,
 +
 +<code java>​breakpoint("​Nombre del breakpoint"​);</​code>​
 +
 +Cuando la ejecución del código llegue a ese punto, se nos mostrará una ventana donde podremos ver:
 +
 +  * El nombre del breakpoint en la barra de título (de este modo, si tenemos varios, podemos ver en cuál estamos parados en ese momento).
 +  * Un campo de texto donde podemos introducir una expresión o una sentencia o serie de sentencias BeanShell y evaluarlas como si se ejecutaran en ese punto del código, obteniendo debajo su valor. Nótese que si las sentencias cambian valores de variables o propiedades,​ estos cambios tendrán efecto en el código (es decir, si ponemos ''​i=1'',​ aparte de obtener el valor de esa expresión - que es 1 - también estaremos cambiando el valor de la variable en la ejecución).
 +  * Una lista de las variables locales que hay declaradas y sus valores. Nótese que, por un problema con BeanShell, en esta lista no se muestran los contadores declarados en la cabecera de los bucles ''​for''​. ​ Esto no debería ser un problema, ya que se pueden declarar dichos contadores como variables externas al bucle y entonces sí se mostrarán.
 +  * Un botón que nos permite continuar la ejecución, saliendo del breakpoint. ​
errores_comunes_con_beanshell.1304249161.txt.gz · Última modificación: 2011/05/01 13:26 por al-khwarizmi