Depuración de Complemento

Cuando los errores en el código de su complemento son difíciles de identificar, está cansado de volver a compilar después de cada simple cambio y las salidas del registrador saturan su código, la depuración puede ser muy tediosa. Así que, esta sección explicará como configurar su plugin para utilizar las capacidades de depuración de Java.

Preparación de su espacio de trabajo

Ya que ejecutaremos ambos, Sponge y su complemento desde su IDE, necesitará importar ya sea SpongeForge o SpongeVanilla, dependiendo cual quiera utilizar, como un proyecto en su espacio de trabajo. Las instrucciones para hacerlo se encuentran en la respectiva página de GitHub de proyectos. Siga esas instrucciones cuidadosamente antes de continuar aquí.

Ahora necesita asegurarse que su proyecto de plugin es visible para el proyecto SpongeForge/SpongeVanilla que acaba de crear. Los pasos necesarios dependen de su IDE.

IntelliJ IDEA

En IntelliJ, cada proyecto tiene su propio espacio de trabajo o espacios de trabajo. Para hacer su proyecto visible para el proyecto Sponge(Vanilla), necesita ser un Módulo. Suponiendo que ya creó su proyecto como se describe en Configuración de IntelliJ IDEA, impórtelo siguiendo los siguientes pasos.

  • Abrir el proyecto SpongeVanilla/SpongeForge.
  • Haga clic en Archivo, seguido de Nuevo, luego Módulo de Fuentes Existentes....
  • Navegue hasta el directorio de su proyecto de plugin.
    • Si está utilizando Gradle, selecciones el archivo build.gradle, en el siguiente diálogo marque``Use auto-import`` y confirme.
    • De lo contrario, solo seleccione el directorio completo y haga clic en Finalizar.
  • Haga clic en Finalizar.

Truco

Si no ha creado todavía su plugin, haga clic en Módulo... en lugar de Módulo de Fuentes Existentes..., entonces cree su proyecto en el siguiente diálogo.

Eclipse

Solo cree su proyecto como se describe aquí Configuración de Eclipse. Siempre que esté en el mismo espacio de trabajo que su proyecto SpongeVanilla/SpongeForge, será visible.

Agregar el Plugin a la ruta de clase de Sponge

La idea detrás de esto es que lanzaremos Sponge desde su IDE, como es normal. Sin embargo, la diferencia es que agregaremos su plugin a la ruta de clase. Ya que Sponge por defecto carga todos los complementos encontrados en la ruta de escape, agregar el proyecto de plugin a la ruta de clase de Sponge lo liberará de la necesidad de volver a compilar y copiar el archivo de artefactos en el directorio de su servidor después de cada cambio.

En primer lugar, debe asegurarse de que tenga configurada(s) correctamente las configuraciones de ejecución / depuración, como se muestra en el Sponge `README.md<https://github.com/SpongePowered/SpongeForge/blob/stable-6/README.md #Running>`_

Luego necesitará editar esa Configuración de Ejecución/Depuración para que se incluya su proyecto en la ruta de clase. Como hacerlo, depende otra vez de su IDE:

IntelliJ IDEA

  • Abra su Estructura del Proyecto.
    • Haga clic en Archivo, seguido de Estructura del Proyecto....
    • O, haga clic en el ícono Estructura del Proyecto, en la esquina superior derecha del IDE, al lado del ícono Buscar.
  • Haga clic en Módulos. Expanda el grupo SpongeForge o SpongeVanilla (dependiendo de su elección).
  • Asegúrese de que SpongeForge_main o SpongeVanilla_main esté seleccionado.
  • En la columna derecha, seleccione la pestaña Dependencias.
  • Haga clic en el símbolo + (Agregar) en el fondo de la columan, y seleccione Módulo de Dependencia.
  • Selecciones yourplugin_main.
  • NO marque la opción Exportar en el módulo, después de que se agregue a la lista.

Eclipse

  • Encuentre su Configuración de Ejecución/Depuración
    • Haga clic en Ejecutar, seguido de Configuraciones de Ejecución...
    • O, haga clic en la flecha desplegable al lado de los íconos Ejecución/Depuración y luego Configuraciones de Ejecución... o Configuraciones de Depuración..., respectivamente.
  • Seleccione su Configuración de Ejecución/Depuración para Sponge (Servidor) en el lado izquierdo.
  • Cambia a la pestaña Classpath.
  • Seleccione Entradas de Usuario, seguido del botón Agregar Proyectos....
  • Seleccione el Proyecto apropiado para su Plugin.
  • Haga clic en el botón Aceptar.
  • Haga clic en el botón Aplicar en la esquina inferior izquierda.

Ejecución de la Configuración

Después de que ha seguido los pasos previos, debería estar listo para empezar la depuración. Si inicia su servidor desde su IDE, su directorio de trabajo será el directorio ejecución en su proyecto SpongeForge/SpongeVanilla. Todos los archivos creados usualmente por un servidor (mundos, configuraciones, etc.) serán almacenados en ese directorio ejecución y persistirán en varias ejecuciones de su servidor de prueba local, tal como si manualmente se copiara un servidor .jar al directorio ejecución e iniciara desde allí.

IntelliJ IDEA

En lugar de presionar la flecha verde que señala la derecha para ejecutar su configuración de Ejecución/Depuración, haga clic en el ícono verde a la derecha, Depurar.

Eclipse

En lugar de presiona la flecha verde que señala a la derecha para ejecutar su configuración de Ejecución/Depuración, haga clic en la flecha desplegable del ícono Depurar (el que muestra un error) y haga clic en su configuración de Prueba (Servidor). Si no aparece en el menú desplegable, haga clic en Configuraciones de Depuración. Selecciones la configuración Prueba (Servidor) y presione el botón Depurar en la parte inferior izquierda.

Uso del Depurador

Ahora que su servidor (y su plugin) están ejecutándose en el Depurador, puede hacer uso de las características que contiene. Los utilizados principalmente se explican brevemente a continuación, aunque no son características de Sponge, sino del Depurador de Java su IDE los utiliza.

Puntos de Ruptura

Los puntos de ruptura son una herramienta útil para observar de cerca al código. Un punto de ruptura, puede ser establecido en el comienzo de un línea de código o una función. Cuando se alcanza un punto de ruptura se detendrá la ejecución del código y su IDE abrirá una vista que le permitirá inspeccionar el contenido de todas las variables en ámbito actual. La ejecución del código no se reanudará a menos que presiones el botón correspondiente en la vista de depuración de su IDE.

Los puntos de ruptura pueden también ser agregados, removidos o temporalmente deshabilitados mientras la depuración está en proceso.

Truco

Una vez un tick de servidor único toma más que una cantidad determinada de tiempo, el watchdog considerará que el servidor se ha bloqueado y lo cerrará por la fuerza. Cuando trabaja con puntos de ruptura esto puede ocurrir, así que es recomendado que edite sus entornos de pruebas del archivo server.properties y establezca el valor de max-tick-time en un valore muy largo (la cantidad de milisegundos que puede tomar un tick) o -1 (para deshabilitar completamente el Watchdog).

IntelliJ IDEA

Para agregar o remover un punto de ruptura, solo haga clic izquierso en el espacio en blanco justo a la izquierda de su editor.

Alternativamente, coloque su cursor en la línea donde quiere agregar o remover el punto de ruptura y después haga clic en Ejecutar seguido de Toggle Line Breakpoint.

Eclipse

Para agregar o remover un punto de ruptura, solo haga clic derecho en el espacio en blanco justo a la izquierda de su editor y haga clic en Toggle Breakpoint.

Alternativamente, coloque su cursor en la línea donde quiere agregar o remover el punto de ruptura y después haga clic en Ejecutar seguido de Toggle Breakpoint.

Código Hotswapping

La otra gran hazaña del depurador es que no tendrá que reiniciar su servidor por cada cambio pequeño que haga, gracias al código hotswapping. Esto significa que puede solo recompilar partes de su código mientras se está ejecutando en el depurador. Sin embargo, hay un par de limitaciones, las más importantes son:

  • No puede crear o remover métodos.

    • Los cambios en los método están limitados al código dentro del método. No puede modificar su firma (que significa su nombre, tipo retorno y tipos de parámetros)
  • No puede remover clases.

    • No puede modificar el nombre de una clase, una superclase o la lista de interfaces que implementa.
    • Puede agregar clases. Sin embargo, una vez que ha sido compilada y hotswapped, la clase sigue las reglas anteriores.

Puede probar esta funcionalidad: Introduzca un comando simple para su plugin que solo escriba una palabra, como Sponge. Luego guárdelo e inicie el servidor como se describe anteriormente. Ejecute el comando. Saldrá Sponge. Ahora cambie el comando para escribir una palabra diferente en la consola, guarde el archivo. Después de un cambio, haga lo siguiente para enrutar los cambios al programa en ejecución:

IntelliJ IDEA

  • Abra el menú Ejecutar, de la parte superior del IDE.
  • Debajo del primer quiebre de categoría, haga clic en Recargar Clases Modificadas.

Eclipse

No se necesita ninguna acción. Tan pronto como guarde el archivo, será recompilado y automáticamente hotswapped con la depuración actual en ejecución. A menos que cambie este comportamiento predeterminado particular, no tendrá que desencadenar un hotswap manual.