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/04/04 11:41]
al-khwarizmi
errores_comunes_con_beanshell [2011/09/04 17:27] (actual)
al-khwarizmi
Línea 205: Línea 205:
 Esta excepción es análoga a la anterior, pero para listas. Se nos informa del índice ilegal al que hemos intentado acceder (en este caso, ''​3''​) y el tamaño de la lista (también ''​3''​). Con esto, y la posición del error en el código, no deberíamos tener problema para depurar el fallo. Esta excepción es análoga a la anterior, pero para listas. Se nos informa del índice ilegal al que hemos intentado acceder (en este caso, ''​3''​) y el tamaño de la lista (también ''​3''​). Con esto, y la posición del error en el código, no deberíamos tener problema para depurar el fallo.
  
-=== Depuración (debugging) ​===+=== Funcionalidad de depuración ​===
  
-Seguir aquí.+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 == 
 + 
 +Si ejecutamos el siguiente código: 
 + 
 +<code java> 
 +Debug.setCodeDebugging(true);​ 
 +</​code>​ 
 + 
 +los parámetros de todos los métodos parseCommand que se llamen desde nuestra aventura aparecerán impresos en la salida de error estándar (que se muestra por defecto en la consola en los scripts de AGE para Linux y Mac, o en un log en el script de Windows). 
 + 
 +== Debugger dinámico == 
 + 
 +AGE dispone de un depurador o "​debugger"​ que permite evaluar expresiones BeanShell durante la ejecución de las aventuras. Se puede activar ejecutando el código 
 + 
 +<code java> 
 +Debug.setEvalEnabled(true);​ 
 +</​code>​ 
 + 
 +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 get ( mobile("​jugador"​) , "​cansado"​ ) 
 +eval item("​puerta roja"​).isClosed() 
 +eval mobile("​goblin"​).hasItem(item("​espada"​)) 
 +</​code>​ 
 + 
 +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.1301910078.txt.gz · Última modificación: 2011/04/04 11:41 por al-khwarizmi