Consola
Adjuntando el MonoDevelop Debugger (El depurador de MonoDevelop) a un Dispositivo Android

MonoDevelop

MonoDevelop es el ambiente de desarrollo integrado (IDE) proporcionado con Unity. Un IDE combina la operación familiar de un editor de texto con características adicionales para depurar y gestionar otras tareas de proyecto. El editor de texto no será cubierto aquí ya que es bastante intuitivo, pero la integración del editor y el depurador con Unity está descrito abajo.

Configurando MonoDevelop

MonoDevelop es instalado por defecto con Unity, aunque ahí hay una opción para excluirlo en las Ventanas de instalación. Usted debería revisar que MonoDevelop esté configurado como el editor de script externo en Preferences (menu: Unity > Preferences y luego seleccione el panel External Tools). Con esta opción activada, Unity va a lanzar MonoDevelop y lo utilizará como el editor predeterminado para todos los archivos de script.

Configurando el Depurador

Para activar la depuración source level debugging (la depuración de nivel fuente) de MonoDevelop (ver a continuación por detalles) usted debería primero revisar que la opción Editor Attaching esté activada en las Preferencias en el panel de External Tools. Luego, usted debería sincronizar el proyecto de Unity con el proyecto MonoDevelop (menú: Assets > Open C# Project). También, asegúrese de que las opciones Development Build y Script Debugging estén activadas en los Build Settings para su plataforma objetivo (menú: File > Build Settings). Si usted está construyendo un reproductor web entonces usted debería adicionalmente revisar que el development release channel setting esté activado en el menú de contexto del navegador del jugador (haga click derecho en Windows o cmd-click en Mac OSX).

Activando la depuración en el reproductor web
Activando la depuración en el reproductor web

Justo antes de comenzar una sesión de depuración, seleccione el objetivo que usted desea depurar de la lista de objetivos alado del botón play (Unity Editor, OSX Player, etc.). Usted puede también seleccionar “Attach To Process”, esto va a mostrar la lista completa de procesos que se pueden depurar en Unity.

Botón de reproducción y lista de objetivos
Botón de reproducción y lista de objetivos

Con estos pasos completados, usted está listo para comenzar a depurar sus scripts de Unity al hacer click en el botón play.

Source Level debugging

Los archivos actuales open source son mostrados como pestañas en MonoDevelop y pueden ser editados ahí con las características de un editor de texto estándar. Sin embargo, también hay una breakpoint bar gris a la izquierda del panel del editor. Al hacer click en esta barra va a agregar un tal llamado marcador breakpoint a lado de la linea de código.

Breakpoint siendo agregado al código en la linea 16
Breakpoint siendo agregado al código en la linea 16

Agregando un breakpoint a la linea instruye a Unity a pausar la ejecución del script justo antes de que alcance esa linea durante el modo de Reproducción. Cuando el script se ha “congelado” como esto, usted puede utilizar el depurador para determinar exactamente lo que el script está haciendo.

La flecha muestra la ejecución pausada en el breakpoint
La flecha muestra la ejecución pausada en el breakpoint

Información acerca del estado de ejecución es mostrado en las pestañas al final de la ventana MonoDevelop cuando la ejecución es pausada en el breakpoint. Probablemente la más importante de estas es la pestaña Locals.

Una pestaña mostrando valores de variables
Una pestaña mostrando valores de variables

Esto muestra los valores de variables locales en la función que actualmente se está ejecutando. (Una variable pseudo-local llamada “this” es automáticamente disponible en cada función sin la necesidad de ser explícitamente definida; es una referencia a la instancia actual de script por lo que todas las variables definidas en el script pueden ser accedidas vía “this”.) Usted puede utilizar breakpoints en combinación con la pestaña Locals para obtener un efecto similar a agregar declaraciones print a su código - usted puede interrogar los valores de las variables en cualquier punto que usted quiera. No obstante, usted puede también editar los valores de la variables en la pestaña Locals. Esto puede ser de gran ayuda cuando usted encuentre una variable configurada incorrectamente y usted quisiera ver si este problema desaparece cuando el valor es configurado cómo debería.

Una característica adicional y útil de MonoDevelop es single stepping. Cuando la ejecución es pausada en un breakpoint, una barra de herramientas de depuración se vuelven disponible en la porción superior de la ventana de MonoDevelop:-

MonoDevelop stepping tools
MonoDevelop stepping tools

Los primeros cuatro botones son conocidos como Continue, Step Over, Step In y Step Out y pueden también ser accedidos como comandos en el menú Run. Continue resume la ejecución hasta que el nuevo breakpoint sea encontrado. Step Over y Step In ambos ejecutan una linea de código a la vez. La diferencia entre los dos es que Step Over ejecuta cualquier llamado de función dentro de la linea todo a la vez, mientras que Step In permite la ejecución paso a paso a continuar en la función. Debido a que es común utilizar Step In accidentalmente en una función que es conocida como correcta, Step Out continua la ejecución hasta final de la función actual y luego nuevamente se pausa en el código que originalmente lo llamo.

Una descripción detallada de las técnicas de source level debugging no es apropiado aquí, pero hay varios libros y recursos web que ofrecen sabiduría en el tema. Adicionalmente, un poco de experimentación lo ayudará a tener un sentimiento de poder de las técnicas y cómo usted puede utilizarlas para darle un seguimiento a los tipos de bugs más comunes.

Consola
Adjuntando el MonoDevelop Debugger (El depurador de MonoDevelop) a un Dispositivo Android