fdb
El SDK de Flex® 2.0 trae una muy util herramienta para debuggear swf.
A diferencia del tan odiado debugger de Macromedia Flash, la herramienta de debuggeo en línea de comandos es mucho más util, además de que no se traba y hasta podemos manipular en tiempo de ejecución las variables de la película.
El SDK trae varias herramientas:
- Compilador de aplicaciones(mxmlc)
- Compilador de componentes (compc)
- Debugger(fdb)
- Generador de documentación(asdoc)
Estas herramientas se encuentran en [unidad]:\Archivos de programa\Adobe\[app]\Flex SDK 2\bin
Donde [unidad] puede ser C, D, etc. y [app] puede ser Flex Builder 2 Plug-in ó Flex Builder 2
En caso de que no tengan una licencia de Flex Builder® y se haya acabado su trial, pueden bajar el SDK de Flex gratis, es muy util para desarrollar si no tienen los recursos para adquirir una licencia de flex y si ya se les acabó el trial; De ninguna manera recomiendo que utilicen copias piratas de ninguno de los programas que aquí se enlistan, incluyendo el sistema operativo; aunque este ejemplo se puede desarrollar completamente con sofware libre o freeware.
Hagamos la clase HolaMundo para ejemplificar el debuggeo de una sencilla aplicación.
La creamos en un package anónimo e importamos las clases necesarias para mostrar una caja de texto en nuestro stage.
Creamos
En el constructor creamos un string al cual le hacemos un trace() y lo ponemos como texto en nuestro TextField, también mostramos la caja en el Stage:
Agregamos una función más que no utilizaremos en esta ocasión y los comentarios pertinentes para que nuestro código quede de la siguiente manera:
Ahora vamos a compilar nuestra clase; para esto vamos a escribir el Archivo build_HelloWorld.bat el cual contendrá lo siguiente:
No creo tener el tiempo ni la paciencia para hacer un tutorial del shell de windows así que si quieres saber que es lo que hace este archivo puedes consultarlo aquí.
Lo importante del archivo anterior es la siguiente línea:
Que es dónde establecemos las opciones para el compilador como el tamaño, frame rate, color de fondo, archivo resultante y las que nos competen : -debug=true y -benchmark=true.
- -debug=true Indica al compilador que el swf resultante debe de estar preparado para debuggeo
- -benchmark=true Permite que el compilador muestre los datos de compilación como el tiempo total utilizado, la memoria y los archivos cargados (Este es sólo por quisquillosidad)
Si estás utilizando eclipse las opciones se establecen en Project/Properties/ActionScript Compiler de la siguiente manera:
Ahora compilamos, ya sea usando eclipse o nuestro archivo bat, la diferencia es que el archivo bat inicializa una consola con el fdb corriendo después de compilar. Al ejecutar nuestro bat debe de salir una consola como la que sigue:
Nuestro swf está listo y se llama HelloWorld.swf. Antes de ejecutar nuestro swf, con la consola aún abierta tipeamos run y damos Enter:
La consola nos devuelve algo así como Waiting for Player to connect, ahora hacemos doble click en HelloWorld.swf la consola debe de reaccionar como sigue:
*NOTA:Debes de tener instalado el plug-in de debuggeo del flash 9, este se encuentra en [unidad]:\Archivos de programa\Adobe\[app]\Player\debug
Ahora utilizamos el comando list.Se puede utilizar sin parámetros y devolverá las primeras 10 líneas de nuestro archivo base (HelloWorld.as en este caso), puede ir seguido de el número de línea que queremos que nos muestre, también del nombre del archivo:número de línea e inlcuso buca nombres de funciones completas o incompletas; en este caso vamos a buscar las funciones que contengan la palabra test. Tipeamos list test y damos Enter, el resultado debe de ser el siguiente:
Como podemos ver la función testLoop contiene un bucle en la línea 55, vamos a poner un breakpoint tipeando break 55 como sigue:
Como podemos ver nos devuelve el id del breakpoint creado, el nombre del archivo en el que se creo y el número de línea. También podemos hacer break testLoop para poner un breakpoint al inicio de la función tipeando break testLoop(). Para borran un breakpoint tipeamos break más el id del breakpoint, tambien podemos hacer clear más el número de línea o el nombre de la función.
Los comandos next y step reciben como argumento el número de veces que se ejecutan. un ejemplo es el que sigue:
Aquí se puede ver el resultado de los traces que pusimos en nuestra clase.Procuren dejar el flujo como la imagen anterior, donde la variable counter es igual a 0.
Ahora vamos a utilizar el comando display para mostrar, en cada ejecución del debugger, la variable counter tipeando display counter y luego next (Para ejecutarlo); enseguida utilizaremos undisplay para dejar de mostrar el valor de la variable como sigue:
Establecemos el valor de la variable counter en 0 utilizando el comando set, desplegamos el valor de counter con display, finalizamos la ejecución del bucle con finish y hacemos pruebas con el comando clear nótando que el debugger no limpia ningún breakpoint si no existe, por ello hay que recordar el correcto uso de clear a diferencia de delete. Al final de estas pruebas sólo utilizamos el comando continue para dejar ejecutar el programa.
Como se puede ver en la imagen, el resultado del bucle es diferente al esperado ya que se estableció la variable counter a 0 estando esta en cuatro, lo cual aumentó la iteración; además ahora si se muestra el swf ya que ha terminado de ejecutar los bucles iniciales; el resultado es el siguiente:
Ahora probamos la película sin debuggear, cerrando la instancia anterior, dando doble click de nuevo en HelloWorld.swf y presionando cancelar cuando nos pregunte donde se ejecutará la herramienta de creación de flash 8 (Sí, sí, ya se debería decir flash 9):

El resultado es el siguiente:
Para ejecutar nuestra aplicación sin debuggeo sólo necesitamos quitar la opción debugger=true. Ahora podemos subir nuestro archivo a un servidor para hacer lo mismo remotamente. Solamente necesitamos enviar mendiante GET la variable debug=true a nuestra película desde nuestro archivo *.html.
Dejo una copia de los archivos de este tutorial.
Abuuurrrrrrrr







